Представление другого контроллера представления, который не является родительским
В раскадровке у меня есть 3 контроллера вида: firstViewController
, secondViewController
, а также controllerA
,
И firstViewController, и secondViewController имеют элемент правой панели навигации, который представляет контроллер A с использованием сегментов в раскадровке.
controllerA
имеет tableView с пользовательскими ячейками таблицы. В customTableCell.xib есть acceptButton, который хранит данные и возвращается к firstViewController. Я могу реализовать это, только если пользователь перейдет от firstViewController к controllerA с помощью popViewController.
РЕДАКТИРОВАТЬ: Но я не могу сделать это, если пользователь попадает в ControllerA из secondViewController, потому что popToViewController не будет работать. Я пытался с помощью:
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'
Между контроллером A и 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];
Он просто падает, если я ввожу controllerA из SecondViewController, потому что я хочу вернуться к firstViewController после нажатия кнопки acceptButton.
1 ответ
Чтобы отобразить первый контроллер вида при нажатии кнопки:
FirstViewController *recordViewController = [[FirstViewController alloc] init];
[self.navigationController pushViewController:recordViewController
animated:YES];
Однако причина ошибки, которую вы получаете:
__NSArrayM insertObject: atIndex:]: объект не может быть нулевым
скорее всего, не связано с подключением к предыдущему контроллеру представления, а обновлением массива при нажатии кнопки. Проверьте код, который срабатывает при нажатии кнопки. Скорее всего, вы добавляете ноль к NSMutableArray
,