2015-02-09 66 views
0

是否可以将代理或NSNotificationCenter观察者分配给在VC1之后加载的VC2,哪里发生了发布?在海报NSNotificationCenter解决方法之后添加观察者?

我有一个带有多个VC的tabbar应用程序。 VC 1首先被加载,并且在加载VC2之前触发一个帖子的动作发生。在VC2中,我需要复制或从VC1获取数组的引用。

有没有其他方法可以做到这一点?请帮忙!我已经在这4个小时了。由于

+0

你的意思是VC2自身添加作为观察员通知其已经发布?通知帖子什么时候发布? vc2什么时候添加为观察者? – KudoCC 2015-02-09 08:17:48

+0

是的!首先装入VC 1,然后调用VC内部的SelectSelect。那么VC2加载并添加为观察者;基本上这个帖子是在VC1的didSelect方法内完成的。 – 2015-02-09 08:21:02

+0

为什么不将VC2作为观察者添加到其init方法中? 'viewDidLoad'方法只在第一次访问'UIViewController'的视图属性时被调用。 – KudoCC 2015-02-09 08:27:45

回答

1

切换他们试试这个,它可以帮助你也许是更好的。

FirstViewController

-(void)viewDidAppear:(BOOL)animated 
{ 
    NSArray *temp=[NSArray arrayWithObjects:@"1",@"2", nil]; 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"postArrayObject" object:temp]; 

} 

SecondViewController

-(void)viewWillAppear:(BOOL)animated 
{ 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objFirstViewController:) name:nil object:nil]; 

} 
-(void)objFirstViewController:(NSNotification *)notification 
{ 
    if ([[notification name]isEqualToString:@"postArrayObject"]) 
    { 
     NSArray *cellData = [notification object]; 
     if (cellData) 
     { 
      UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"WORKING" 
                   message:nil 
                  delegate:nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 

      [message show]; 
     } 

    } 

} 
+0

OH!有趣的。我甚至没有考虑生命周期方法!谢谢 – 2015-02-09 08:34:04

0

,如果你创造一种NavigationController的是拥有所有VC的参考,然后用addSubviewremoveFromSuperview

相关问题