1

ここに簡単で汚い質問があります: 親 VC から開かれ、ナビゲーション コントローラーを使用する「メイン」ビュー コントローラー (VC) があります。次に、「メイン」VC から開かれた (モーダル セグエ) 「サブ」VC があります。

メイン VC のインターフェイスにプロパティを設定しました。

@property (nonatomic) int myVar;

次に、「メイン」VC のインターフェイスから「サブ」VC を表示するためにタッチされるボタンのアクションから設定します。

self.myVar=1;

mainVC.h を subVC.h にインポートしました

次に、サブ VC の viewDidLoad メソッドで、myVar の値にアクセスしようとしていますが、次の方法ではアクセスできません。

NSLog(@"Myvar is %i", ((mainVC*)self.parentViewController).myVar);

これは値を 0 として返します。

そして、代わりにViewControllerメソッドを提示しようとすると、エラーが発生します(モーダルにする代わりにセグエをプッシュしたときにエラーは発生しませんでした:

[MainVC myVar]: 認識されないセレクターがインスタンスに送信されました

私は iOS 5 用にコーディングしようとしていますが、言うまでもなく、私はまだ初心者です。私は何が欠けていますか?

ありがとう!

4

1 に答える 1

1

parentViewControllerサブ」ビュー コントローラーの はではなくmainVCナビゲーション コントローラーです。にmainVCはアクセスできません。ご存知のとおり、メモリを節約するために割り当てが解除されている可能性があります。

セグエでメイン コントローラーからサブ コントローラーにデータを渡す必要がある場合は、インスタンス変数を「サブ」ビュー コントローラーに追加し、それを prepareForSegue メソッドに設定します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"open_sub"]) {
        subVC *sub = segue.destinationViewController;
        sub.myVar = 1;
    }
}
于 2013-05-24T19:57:37.970 に答える