呈现另一个不是父母的视图控制器

时间:2014-03-06 20:10:16

标签: ios uiviewcontroller uinavigationcontroller poptoviewcontroller presentviewcontroller

在故事板中,我有3个视图控制器:firstViewControllersecondViewControllercontrollerA

firstViewController和secondViewController都有一个导航右栏项,在storyboard中使用segue显示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。

1 个答案:

答案 0 :(得分:0)

要在按钮上显示第一个视图控制器:

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

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

  

__ NSArrayM insertObject:atIndex:]:object不能为nil

很可能与弹出到以前的视图控制器无关,而是更新按钮上的数组。检查点击按钮时触发的代码。您最有可能添加的对象为NSMutableArray的零。