我有SPLITVIEW iPad应用程序,并在detailviewcontroller的导航栏右侧栏按钮。
此按钮调用构成的导航控制器和两个表视图的酥料饼。 如显示在下面的图片
由于故事板是在图片上小我添加一些解释。 白控制器是detailViewController(所述splitviewcontroller的右手侧),它是一种navigtion控制器内。 在白色视图的右侧的三个观点是左到右:navigationController,firstTableView,secondTableView。
我的问题是我需要的参数传递给第一个表视图,以正确配置。
我用那样做时,视图控制器都共享相同的导航控制器。
- (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;
}
}
我的问题是,我得到一个错误,这样做是因为该目标控制器是不是我popoverFirstTableViewController但NavigationController,当然还有导航控制器不哈弗“property1”和“property2”。
也许这是一个基本的问题,但我在这里停留。
我该怎么办通过指定它的一些属性我已经定义时,此表是一个导航控制器内部配置我的tableview?
所有的功劳属于@迈克尔Kernahan,但只要他不要发布它作为一个答案,我会写它作为一个为人们寻找相同的答案跟进。
在我的情况下,问题是,我分配目的地控制器,它是导航控制器
popoverFirstTVC = segue.destinationViewController;
我应该做的是访问导航控制器的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;
}
我不完全相信我跟随,因为故事板是一个有点小,我阅读。 但你似乎在代码中创建了一个闪闪发光的新popoverFirstTVC然后由分配扔它拿走
popoverFirstTVC = segue.destinationViewController;
如果你评论说线路输出端口,然后在然后结束写入
segue.destinationViewController.itsPopover = popoverFirstTVC;
然后就可以通关的全构造和初始化popoverFirstTVC和第二VC有代码把它捡起来,并运行它。 当然,你需要
@property (strong, readwrite) MyPopoverFirstTableViewController * itsPopover;
在你的第二个VC头。
文章来源: How to pass parameters to a popover view controller inside a navigation controller