Представление другого контроллера представления, который не является родительским

В раскадровке у меня есть 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,