1

firstViewControllerストーリーボードには、 、secondViewController、およびの3 つのビュー コントローラーがありcontrollerAます。

firstViewController と secondViewController の両方に、ストーリーボードでセグエを使用して controllerA を表示するナビゲーション右バー項目があります。

controllerAカスタム テーブル セルを含む tableView があります。customTableCell.xib には、データを格納して firstViewController にポップバックする acceptButton があります。ユーザーが popViewController を使用して firstViewController から controllerA に移動した場合にのみ、これを実装できます。

編集:しかし、popToViewController が機能しないため、ユーザーが secondViewController から ControllerA にアクセスした場合、私はそれを行うことができません。私は使用してみました:

FirstViewController *recordViewController = [[FirstViewController alloc] init];
[self.navigationController pushViewController:recordViewController
                                     animated:YES];

編集:私はこのエラーでクラッシュしています:

__NSArrayM insertObject:atIndex:]: object cannot be nil'

[SecondViewController recordCardNumber:recordCheckInID:]: unrecognized selector sent to instance 0x17d97250'

controllerA と firstViewController の間には委任関係があります。

どうすればこれを適切に実装できますか?

編集: これは FirstViewController のデリゲートです:

#pragma mark - ControllerADelegate

- (void)recordCardNumber:(NSString *)number recordCheckInID:(NSString *)checkInID
{
self.CardNumbertext.text = number;
NSLog(@"record card# %@", self.CardNumbertext.text);
}

使用すると、データを通過させて firstViewController に正常にポップしています

[self.delegate recordCardNumber:number recordCheckInID:checkInID ];
[self.navigationController popViewControllerAnimated:YES];

acceptButton が押されたら firstViewController に戻りたいので、 SecondViewController から controllerA に入るとクラッシュします。

4

1 に答える 1

0

ボタンタップで最初のView Controllerを表示するには:

FirstViewController *recordViewController = [[FirstViewController alloc] init];
[self.navigationController pushViewController:recordViewController
                                     animated:YES];

ただし、取得しているエラーの原因は次のとおりです。

__NSArrayM insertObject:atIndex:]: オブジェクトを nil にすることはできません

前のView Controllerへのポップではなく、ボタンタップで配列を更新することに関連している可能性が最も高いです。ボタンをタップしたときに発火するコードを確認します。ほとんどの場合、nil のオブジェクトを a に追加していますNSMutableArray

于 2014-03-06T20:19:18.233 に答える