mzgkworks

iOSを中心にプログラミング関係について書く

【Objective-C】Embed Inで追加したNavigation Controllerの配下にあるViewControllerに値を渡したい

Navigation Controllerの先にあるViewControllerに値を渡したいと思う。
普通に渡したい先のViewControllerのインスタンスを生成して処理を書く。
「unrecognized selector sent to instance」のエラーが表示。
内容を見るとNavigationControllerにset〜:のセッターがないよ!って内容。
渡したいのはその先のViewControllerなのに。

f:id:mzgkworks:20150131164541p:plain

環境

  • Xcode6.1.1
  • CのViewControllerには.hにプロパティを用意済み
  • Segueを使用

解決方法

// propertyを用意
@property (nonatomic) NSString *pageURL;
#import "C_ViewController.h"

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // StoryBoard SegueのIdentifierの値が同じなら(複数Segueが存在する場合に)
    if ([[segue identifier] isEqualToString:@"対象のSegueのIdentifier"]) {
        // Embed Inで追加したNavigationControllerの先にあるViewControllerに値を渡す
        UINavigationController *navigationView = [segue destinationViewController];
        C_ViewController *c_View = (C_ViewController*)navigationView.visibleViewController;
        c_View.pageURL = @"渡したい値";
    }
}