3

xib を使用すると、さまざまな初期化子を呼び出すことができます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Fetch Note...
    // Initialize Edit Note View Controller with the fetched Note
    EditNoteViewController *vc = [[EditNoteViewController alloc] initWithNote:note];

    // Push View Controller onto Navigation Stack
    [self.navigationController pushViewController:vc animated:YES];
}

これにより、(EditNoteViewController 内の) 変数をプライベートに保つことができ、一部の変数にデフォルト値を設定することもできました。

- (id)initWithNote:(Note *)note {
    // ....
    if (self) {
        self.note = note;
        self.isEditing = YES;
    }
    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    //...
    if (self) {
        self.isEditing = NO;
    }
    return self;
}

私は今、ストーリーボードを操作しようとしています:

  • 変数やその他の実装を公開せずに、prepareForSegue から変数を設定する良い方法はありますか?
  • デフォルト値を設定するにはどうすればよいですか?

できるだけ明確にしてください

4

2 に答える 2

-1

prepareForSegue を使用する必要があります。受信ビュー コントローラーで必要なものだけを公開する

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Prepare for next view controller
  if ([segue.identifier isEqualToString:@"someThing"]) {
    SomeThingViewController *viewController = segue.destinationViewController;
    viewController.someProperty = @"something else";
  }
}

プロパティ someProperty は、 SomeThingViewController のヘッダーで公開する必要があります

@property (nonatomic, strong) NSString *someProperty;

デフォルト値を設定するには、受信ビュー コントローラーの viewDidLoad でプロパティの値を確認します。

if (someProperty==nil) someProperty = @"Default";
于 2013-06-20T01:16:45.267 に答える