2012-03-21 17 views
1

巨大なストーリーボード(SVNマージ悪夢)を分割するのに役立つネストされたストーリーボード構造を作成しようとしています...とにかく私は親ストーリーボード/ viewControllerを持っていますcase NestedStoryTestViewContollerと他の2つのストーリーボード/ ViewController(それぞれStoryOneとStoryTwo)IOS:presentViewViewControllerのpresentingViewControllerのプロパティとメソッドにアクセスできません

NestedStoryTestViewContollerのボタンをクリックすると、StoryOneがモーダルビューとして起動します。私はそれを却下して、NestedStoryTestViewControllerに戻ることができます。しかし、StoryOneからStoryTwoに直接移動したい場合、私は問題にぶつかります。私がしたいのは次のようなものです:

-(IBAction)goToStoryTwo{ 

    UIStoryboard *storyTwo = [UIStoryboard storyboardWithName:@"BoardTwo" bundle:nil]; 
    UIViewController *boardTwoVC = [storyTwo instantiateInitialViewController]; 
    boardTwoVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self.presentingViewController presentModalViewController:boardTwoVC animated:YES]; 

} 

しかし、これは何もしません。

私のようなものでモーダルビューを閉じることができます。

-(IBAction)goToMain{ 

    [self dismissModalViewControllerAnimated:YES]; 
} 

と私はmodalviewを棄却した後NestedStoryTestViewControllerのviewDidLoadメソッドから新しいModalViewを呼び出すことができますが、それが機能するために、私は方法のいくつかの並べ替えを呼び出す必要がありますNestedStoryTestViewCOntrollerで新しいモーダルビューをロードするためのプロパティを設定します。

私は、このようなメソッドを呼び出すしようとすると、私は理由なしのように思える何のために素敵な大きな脂肪のコンパイラエラーを取得:

[self.presentingViewController setViewToLoad:@"StoryOne"]; 

はエラーをトリガ:自動参照カウントの問題「レシーバタイプ 『のUIViewController』例えばメッセージはセレクタ 'setViewToLoad'を持つメソッドを宣言しません。

このメソッドは明確に定義され実装されていますが、なぜこのエラーがスローされるのかわかりません。私は 'presentingViewController'にもプロパティを設定しようとしたときに同じエラーが発生します。

NSLog(@"parent class : %@",[[self presentingViewController] class]); 

のようなログステートメントを挿入すると、 'parent class:NestedStoryTestViewController'が正常にログに記録されます。

これは仕事のためのものであり、したがって非常に重要でタイムリーなものですので、助力をいただければ幸いです。必要に応じてプロジェクトファイルを提供することができます。

おかげで、 クリス

注意してください:私は「presentingViewController」から「parentViewController」から名称変更を認識していて、プロジェクトが5.0であるだけなので、これは問題ではありません。

+0

あなた2番目の問題は '[(NestedStoryTestViewController *)self.presentingViewController setViewToLoad:@" StoryOne "];'を使って修正できます。最初の問題については確信していません。 – lnafziger

+0

これは無関係の問題であるため、別々の質問として投稿することをお勧めします。 – lnafziger

+0

SWEEEET!あなたは最高のMr.Inafzgerです!もう一つの問題は、私が私のようにこれをやろうとしている理由についての背景にすぎません。以前のモーダルビューがアニメーション化されるまで別のモーダルビューを作成できないため、動作しないと確信しています。しかし、あなたの助言を得て、私は私のマルチストーリーボードソリューションを実装し続けることができます。 – wwwWRX

答えて

0

あなたが次の行にエラーが出る理由:あなたのNestedStoryTestViewControllerクラスのメソッドを呼び出しているが、コンパイラが、それはUIViewControllerクラスだと思いますので、

[self.presentingViewController setViewToLoad:@"StoryOne"]; 

です。あなたはクラスが何であるかを知っているので、コンパイラが認識できるように

は、あなたはそれがこのように、あなたの方法に応答することも適切な型に「変換」(またはキャスト)する必要があります。

[(NestedStoryTestViewController *)self.presentingViewController setViewToLoad:@"StoryOne"]; 
+0

私は '[(ItViewController *)self.presentingViewController setSelectedBook:[_ BookItems objectAtIndex:[indexPath row]]];'私はxcodeのintellisenseから "setSelectedBook"も取得しますが、実行時にエラーが発生するのはなぜですか? "[UINavigationController setSelectedBook:]:認識できないセレクタがインスタンスに送信されました0x6b4ad10 '" –

+0

だから、私はRohitを解決しましたか? – Nick

関連する問題