0

在根视图控制器中,当我单击一个按钮时,视图控制器会推送到类别视图控制器,然后它会呈现一个子视图控制器。当我选择一行时,子视图控制器关闭,然后返回类别,然后返回根视图控制器。我在子视图控制器中创建了一个委托,根视图控制器符合这个委托。如果委托是在类别视图控制器中创建的,我可以处理它。但它是在子视图控制器中创建的,它是由类别视图控制器呈现的。那么,如何将此委托分配给根视图控制器。触发动作的按钮是这样的:

RootViewController.m

- (void)chooseCat:(BButton *)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    CategoryViewController *cat = [storyboard instantiateViewControllerWithIdentifier:@"Cats"];
// How to create a instance of ChildViewController and assign ChildViewController's delegate to this RootViewController?
    [self.navigationController pushViewController:cat animated:YES];

}
4

2 回答 2

1

两种方式

1)代表桥

childView创建确认到的委托CategoryVCCategoryVC再次创建确认到的委托rootViewController

然后在 rootViewController 中为 CategoryVC 分配委托,在 CategoryVC 中为 childView 分配委托。并传递值或执行任何操作。

2)使用NSNotificationCenter哪个最简单。

注册通知rootViewController喜欢

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(yourMethod) 
                                             name:@"myNotification"
                                           object:nil];

-(void)yourMethod
{

}

使用通知childView使用

[[NSNotificationCenter defaultCenter]
             postNotificationName:@"myNotification" 
             object:self];
于 2013-04-19T11:17:25.787 回答
0

您可以将 rootView 控制器的 ref 传递给CategoryViewController然后再传递给ChildViewController,这样您就可以间接分配delegaterootViewController.

如果你必须从chidViewControllertorootViewController那么你也可以使用NSNotificationCenter。所以需要通过参考...

于 2013-04-19T11:06:25.823 回答