1

どのストーリーボードが常にアクティブであるかを特定する方法を考え出す必要があります。ストーリーボード (UIView) を識別し、ユーザーが何を押したかに応じてプログラムで変更する必要がある特殊なネイティブ化があります。

  1. すべてのストーリーボードには識別子があります。
  2. ルートビューのviewDidLoadには次のものがあります。
- (void)viewDidLoad
 self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View1"];
{

私がやりたいことは、ユーザーがどのストーリーボードにいるかを特定し、プレスに応じて次のsudoコードを実行することです

- (void)viewDidLoad
if (storyboard.name != RootView)
   self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View1"];
{
else if (storyboard.name = View2){
   self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View2"];
}

等....

私はコードをステップ実行して StoryboardID を見ましたが、それはあなたが使用するつもりはないと確信しています....

前もってありがとうジェレミー

更新: ナビゲーションへの説明

を実装しようとしてECSlideViewControllerいますが、頭を悩ませています。スライドを適切な機能に効果的に追加して、より多くのオプションを明らかにしています。だから、この考えは簡単になるだろうと思っていたが、厄介なものになった. 私はマスターUIViewController<title:HomeView>を持っています。次に、画面に4つのボタンがあり、他のボタンUIViewControllers<View1>などUIViewController<View2>に移動します。

View1、View2、View3、View4 で効果を生み出すには、(ECSlideViewController例のように) クラスをUIViewController<HomeView>. ただし、これを表すために以下のコードを変更すると...

self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"HomeView"]; 

自分自身を呼び出すため、クラッシュします。よくない、循環コーディングはノーノーです。

しかし、元々あったものに設定すると

self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"FirstTop"];

(ところで、firstTop は例で使用されるビューのタイトルです)

それは機能しますが、その後無視しますUIViewController<HomeView>

これが、 の を特定する方法があるかどうかを尋ねた理由ですself.title(UIViewControllerストーリーボードと言った...私の悪い) にある場合はコードを入れないように、その周りに条件付きロジックを配置するつもりでしたUIViewController<HomeView>

ECSlideViewControllerをダウンロードして遊んでみないと説明が難しいです。しかし、効果的には、self.titleをテストしたいだけです.....私は思う...

もう1つのアイデアは、ロジックを4つのうちの に持ち込み、UIViewControllersそこで動作させることでした...しかし、識別子を期待しているため、nilを渡すとびっくりします...

これが理にかなっていることを願っています....

J.

4

2 に答える 2

1

オーケーガイズ、

ECSlideViewController を完全に捨てました。複数の UiViewControllers がデータを正しく渡さない場合に問題が発生することを説明する記事をいくつか見つけました。アンドリューの提案を使用することになりました。http://www.youtube.com/feed/UCJA_puohXgnze8gPaerTeig 私にとっては簡単に機能しました。

私は Apple が持っているデザイン ガイドラインに注意を払っていますが、これは通常ノーノーですが、彼らが気にしないことを願っています。

みんなありがとう!

J.

于 2013-02-19T07:13:58.447 に答える
0

これが役立つかどうかはわかりませんが、探している結果を得るにはインスタンスを比較する必要があるようです。私はこれを試していませんが、アプリ デリゲートで各ストーリーボードのプロパティを作成し、View Controller でアプリ デリゲートを参照して比較します。これはコーディングのベストプラクティスではないかもしれませんが、あなたの手に委ねます。

(テストされていないコード) のようなもの:

- (void)testStoryBoard //After awake from nib or viewDidLoad
 {
    NXAppDelegate *appDelegate = (NXAppDelegate *)[[UIApplication sharedApplication] delegate];
    if ([self.storyBoard isEqual:appDelegate.view1StoryBoard]) 
         NSLog(@"View1 Storyboard");
    else 
         NSLog(@"View 2 Storyboard");
 }
于 2013-02-18T05:28:43.483 に答える