【问题标题】:How to assign the delegate to the second view controller如何将委托分配给第二个视图控制器
【发布时间】:2013-04-19 10:51:50
【问题描述】:

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

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];

}

【问题讨论】:

    标签: iphone ios delegates uistoryboard


    【解决方案1】:

    两种方式

    1) 代理桥

    childView 中创建委托,确认CategoryVC。再次在CategoryVC 中创建委托,确认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];
    

    【讨论】:

      【解决方案2】:

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

      如果您必须从chidViewController 传递到rootViewController,那么您也可以使用NSNotificationCenter。所以需要通过ref...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-01
        • 2018-05-01
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 2019-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多