1

在情节提要中,我有 3 个视图控制器:firstViewControllersecondViewControllercontrollerA.

firstViewController 和 secondViewController 都有一个导航右栏项,它使用情节提要中的 segues 呈现 controllerA。

controllerA有一个带有自定义表格单元格的 tableView。在customTableCell.xib 中有一个acceptButton,用于存储数据并弹回firstViewController。只有当用户使用 popViewController 从 firstViewController 转到 controllerA 时,我才能实现这一点。

编辑:但如果用户从 secondViewController 进入 ControllerA,我将无法做到这一点,因为 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'

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];

如果我从 SecondViewController 输入 controllerA 它只会崩溃,因为我想在按下 acceptButton 后返回到 firstViewController。

4

1 回答 1

0

要在按钮点击时显示第一个视图控制器:

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

但是,您收到错误的原因是:

__NSArrayM insertObject:atIndex:]: 对象不能为 nil

很可能与弹出到先前的视图控制器无关,而是在按钮点击时更新数组。检查点击按钮时触发的代码。很可能您正在将一个 nil 对象添加到NSMutableArray.

于 2014-03-06T20:19:18.233 回答