1

私はSCで見つけることができるすべてのオプションを試したように感じるので、誰かが助けてくれることを本当に望んでいます。最初に申し訳ありませんが、コードが乱雑である、またはこれがダムの質問である場合、開発は私の最強のポイントではありません:/ナビゲーションコントローラを介してsegueを介してデータを渡す - 目的C

基本的に私はストーリーボードで作成されたiPad固有のアプリを持って、ナビゲーションコントローラ。アプリは非常に線形で、順番に各画面を移動します(アプリ内ではジャンプできません)。

最初の画面には、ユーザーが2つのボタンで作成できる2つの選択肢があり、それぞれが画像を表示し、選択したいずれの画像も次の各画面に表示する必要があります。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"passSegue"] && (parentImage.hidden == NO) && (parentImage2.hidden == NO)) { 
    ViewControllerGirl2 * vc = [segue destinationViewController]; 
    UIImage *imageView = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/1.png"]]; 
    UIImage *imageView2 = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/2.png"]]; 
    vc.parentImage = imageView; 
    vc.parentImage2 = imageView2;  
} 

をしかし、今、私は私のイメージは、もはや次の画面に表示されUINavigationControllerに埋め込まれていない:私は埋め込まれたナビゲーションコントローラを持っていなかった場合は

は、それは次のように呼び出すことでうまく働きました。私は提案された方法を試した:

UINavigationController *navController = [segue destinationViewController]; 
ViewControllerGirl2 *vc = (ViewControllerGirl2 *)navController.topViewController; 

しかし、私はそれらの提案を実装しようとするたびにクラッシュしました。

私は2日間固体のためにこれに固執されているので、どんな助力も非常に高く評価されるでしょう。

+0

クラッシュしたらどうなるでしょうか?もしあればデバッグ出力を意味しますか? –

+0

こんにちは@EugeneZhenyaGordinそれは言う: キャッチされていない例外 'NSInvalidArgumentException'の理由によるアプリケーションの終了 - 理由: '[ViewControllerGirl2 topViewController]:インスタンス0x7c9c13b0' – Aggie

+0

に送信された認識されないセレクタので、destinationViewController UINavigationControllerまたはViewControllerGirl2ですか?ブレークポイントを介してデバッグを見て、あなたが間違ったキャストを行っていると思うのですが...エラーは、ViewControllerGirl2にはメソッドtopViewControllerがないことを示していますので、destinationViewControllerはすでにViewControllerGirl2であると仮定します。 –

答えて

0

あなたのUINavigationControllerをサブクラス化した場合、早急な回避策として、parentImageプロパティを追加することができます。また、segueの準備の中で、ナビゲーションコントローラのプロパティに画像値を割り当てます。次に、宛先ビュー・コントローラのviewWillAppearで、次の操作を実行できます。

self.parentImage = yourNavController.yourImageProperty1; 
self.parentImage2 = yourNavController.yourImageProperty1; 
+0

これに感謝しますが、私はまだSegueが正しく動作するように準備することができないか、Segueの準備を完全に廃止することを提案していますか? – Aggie

0

i対象宛先ビュー・コントローラはナビゲーションconteollerです。これを試してください

UINavigationController * navController = [segue destinationViewController];

viewControllerGirl2 * vc2 =(ShowItemsTableViewController *)([navController viewControllers] [0]);

希望すると、これが役に立ちます。 。

+0

ありがとうございますが、結果は同じです – Aggie

0

UIコントローラをインスタンス化し、そしてない特性のために使用prepareforsegueていますが、親ののviewDidLoadを使用してUIのプロパティを設定する必要がある場合:のviewDidLoadは、あなたもその中にviewWillAppearを使用する前に

// in interface declare this 
@property (nonatomic, weak) ViewControllerGirl2 *childViewController; 

// in viewDidLoad 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIImage *image = [UIImage imageNamed:@"1.png"]; 
    self.childViewController.parentImage = image; 
} 

// in segue 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.destinationViewController isKindOfClass:[ViewControllerGirl2 class]]) { 
     self. childViewController = segue.destinationViewController; 
    } 
} 

prepareforsegueが実行されますこの場合のみです

関連する問題