0

ボタンを押すことblaVCで別のView Controllerを呼び出すviewControllerがあります。blubbVC4 つのボタンがあり、すべてblubbVC同じペン先で呼び出されますが、コンテンツは押されたボタンによって異なるはずですblaVC(コンテンツは plist から読み込まれますblubbVC) 。 A が押されたので、objectForKey:@"button A"" で plist から読み込みます(いわば..)。

私はそのようにblubbVCを呼び出します

- (IBAction) buttonA:(id)sender {
blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}

をパスしようとしましたが、senderにコンテンツをロードすると、遅くなり、コンテンツはすでにロードされている (またはロードしようとしていた) ため、ビューは空のままです。どうすればいいですか?initWithNibNamesender

ありがとうございました!

4

2 に答える 2

1

初期化された後、すべての状態を設定する送信者(または押されたボタンを表す値)を取得するという関数を定義する必要があります。

例えば:

[detailView setupContent:(id)sender];

ビューコントローラを初期化しても、まだ表示されていません。pushViewControllerを呼び出す前に、新しい関数を呼び出すと、次のようになります。

- (IBAction) buttonA:(id)sender {
    blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil];
    [detailView setupContent:sender];
    [self.navigationController pushViewController:detailView animated:YES];
    [detailView release];
}

これが遅すぎることが事実である場合(「initWithNibName」のデータが必要です)、独自のデータまたは同様のものを定義し、残りの状態を設定する前に-[initWithNibName: andSender:]呼び出します。[super initWithNibName:]

于 2011-05-26T18:14:57.217 に答える
0

ビュー コントローラーでカスタムの init メソッドを作成する必要があります。何かのようなもの:

+(id)initWithCaller:(NSString*)caller
{
    if(self == [super initWithNibName:@"blubbNib" bundle:nil]) 
    {
      calledFrom = x;
    }
    return self;
}

記憶を頼りに書いただけなので、間違っているかもしれません。次に、IBActions でその新しい init メソッドを使用します。

于 2011-05-26T18:17:53.817 に答える