如何将参数传递到酥料饼视图控制器导航控制器内部(How to pass parameters to

2019-07-04 04:27发布

我有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?

Answer 1:

所有的功劳属于@迈克尔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;
}


Answer 2:

我不完全相信我跟随,因为故事板是一个有点小,我阅读。 但你似乎在代码中创建了一个闪闪发光的新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