我有一个 iPad 应用程序,在 detailviewcontroller 的导航栏中有一个 splitview 和一个右栏按钮。
此按钮调用由导航 Controller 和两个 TableView 构成的弹出窗口。 如下图所示
由于 Storyboard在图片上很小,我添加了一些解释。 白色 Controller 是 detailViewController(splitviewcontroller 的右侧),它位于导航 Controller 内。白色view右边的三个view从左到右分别是:navigationController, firstTableView, secondTableView。
我的问题是我需要将参数传递给第一个 TableView 以正确配置它。
当 View Controller 共享同一个导航 Controller 时,我常常这样做。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"popoverButtonSegue"]){
MyPopoverFirstTableViewController *popoverFirstTVC = [[MyPopoverFirstTableViewController alloc] init];
popoverFirstTVC = segue.destinationViewController;
popoverFirstTVC.property1 = aProperty1;
popoverFirstTVC.property2 = aProperty2;
}
}
我的问题是我在执行此操作时遇到错误,因为目标 Controller 不是我的 popoverFirstTableViewController,而是 NavigationController 和导航 Controller 当然没有“property1”和“property2”。
也许这是一个基本问题,但我被困在这里。
当此表位于导航 Controller 内时,如何通过分配我定义的一些属性来配置我的 TableView ?
最佳答案
所有功劳都属于@Michael Kernahan,但只要他不将其作为答案发布,我就会将其作为后续跟进,供寻找相同答案的人使用。
在我的例子中,问题是我分配的目标 Controller 是导航 Controller
popoverFirstTVC = segue.destinationViewController;
我应该做的是访问那个导航 Controller 的 topViewController。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"popoverButtonSegue"]){
MyPopoverFirstTableViewController *popoverFirstTVC = (MyPopoverFirstTableViewController *)((UINavigationController *) segue.destinationViewController).topViewController;
popoverFirstTVC.property1 = aProperty1;
popoverFirstTVC.property2 = aProperty2;
}
关于ios - 如何将参数传递给导航 Controller 内的弹出 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591559/