0

これが単純な質問のように思える場合は申し訳ありませんが、このテーマをグーグルで検索するたびに、私が見つけることができるのは、子ビューから親ビューにデータを渡す方法だけであり、その逆ではありません。

基本的に、私は独自のUINavigationコントローラーにあるモーダルビューを提示しています。モーダルビューは、ユーザーが「編集」できるかどうかを知る必要があります。そのため、これを行う最も簡単な方法は、子ビュー(isEdit)のBOOLをTRUEに設定することだと思いました(これにより、発生しているセグエに応じて設定)ただし、このモーダルビューはUINavigationコントローラーから表示されているため、-(void)prepareForSegue関数からアクセスしてBOOLを直接設定することはできません。UINavコントローラーをサブクラス化し、設定可能なBOOLを含めてから、子ビューで再度チェックしようとしましたが、子ビューからコントローラーにアクセスできないようです-コードを含めますが、確かにこのタスクを実行するためのより簡単な方法が必要です!

このブール値をUINavigationControllerを介して子ビューに渡すより経済的な方法を提案できる人はいますか?

ありがとう

4

2 に答える 2

5

セグエがナビゲーションコントローラーを呼び出す場合は、からルートビューコントローラーにプロパティを設定できます-prepareForSegue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MySegueId"]) {
        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        MyViewController *childController = (MyViewController *)navController.childViewControllers.lastObject;
        childController.isEditable = YES;
    }
}
于 2013-02-07T01:35:57.407 に答える
0

モーダルビューコントローラを割り当て/初期化するときは、プロパティを設定するだけです(たとえば、モーダルビューコントローラはProfileVCと呼ばれます)。

ProfileVC *vc = [[ProfileVC alloc] init];
vc.isEdit = YES;
[vc.navigationController presentModalViewController:vc animated:YES];

ProfileVC.hにisEditというプロパティがあることを確認してください。

@interface ProfileVC : UIViewController
@property (nonatomic) BOOL isEdit;
@end
于 2013-02-07T01:34:54.690 に答える