标签栏更改后重新加载页面

时间:2013-12-05 12:32:57

标签: ios iphone uitableview uitabbarcontroller master-detail

我在标签栏控制器中使用了一个masterdetail应用程序。从一个标签中,我正在收集一些数据并使用

tabBarController.selectedIndex=0;

这将转到具有masterview控制器的第一个选项卡。但是,我已在第三个选项卡中更新了数据库,并且必须在第一个选项卡的主详细信息应用程序中更新表内容。实际上,我需要调用

viewDidLoad
设置所选索引后的主详细信息应用程序的

。谁能说怎么做呢。

2 个答案:

答案 0 :(得分:3)

在新方法中重写viewDidLoad的内容,并在viewWillAppear上调用它们。

答案 1 :(得分:0)

有几种方法可以实现这一目标。

  • 更改第一个标签中的代码,以便在您的视图显示而非加载时更新(推荐方法)

  • 如果您对控制器有引用,则调用控制器的view方法强制viewDidLoad。

    [self.localFundraiserController view];
    
  • 使用通知。在用户输入某些数据后的第3个选项卡中,发送通知。在第一个标签中,查找通知并回复。

    //1st tab controller:
    -(void)viewDidLoad {
         [self loadUserData:nil]
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadUserData:) name:@"kUserEnteredData" object:nil];
    }
    
    -(void)loadUserData:(NSNotification*)notification {
        id userData = notification.object;
    }
    
    //3rd tab controller when user entered data
    [[NSNotificationCenter defaultCenter] postNotificationName:@"kUserEnteredData" object:userData];
    

发布通知时,您可以传递将在loadUserData方法中读取的对象数据。这是可选的。通知的问题是无法保证第一个标签中的视图仍然被加载,因此可能无法响应通知。