0

ViewControllerAViewControllerBという名前の 2 つのビュー コントローラーがあるとします。

ストーリーボードを使用しなかった場合、次の初期化メカニズムがあります。

//ViewControllerA.h

@interface ViewControllerA : UIViewController

@end

//ViewControllerA.m

@implementation ViewControllerA

- (IBAction)showViewControllerB:(id)sender {
    ViewControllerB *vcB = [[ViewControllerB alloc] initWithTitle:@"Test"];
    [self.navigationController pushViewController:vcB animated:YES];
 }

@end

//ViewControllerB.h

@interface ViewControllerB : UIViewController

- (id)initWithTitle:(NSString *)title;

 @end

//ViewControllerB.m

@interface ViewControllerB()

@property (nonatomic, retain) NSString *title;//Private scope.

@end

@implementation ViewControllerB

- (id)initWithTitle:(NSString *)title {
    self = [self init];
    if(self)
    {
        _title = title;
    }
    return self; 
}

@end

タイトル プロパティをパブリック スコープ (ViewControllerB.h) で宣言せずに、ストーリーボードを使用してこれを達成するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

0

プロパティを非公開にする必要がある場合は、 をvcB使用してオブジェクトにデータを添付できますobjc_setAssociatedObject。または、代わりに AppDelegate にプロパティを保存し、ViewControllerB の初期化時にそこから取得することもできます。

于 2013-11-11T13:35:19.157 に答える