在标签栏控制器中将数据从一个视图传递到另一个视图,而不是按时传递

时间:2014-09-04 22:24:35

标签: ios objective-c tabs

这可能是一个简单的问题,但经过反复试验,我无法获得我想要的结果。我有一个带有4个选项卡的标签栏控制器,它在视图之间传递一个对象(NSString)。直到第二次点击后,我通过的字符串才会显示在标签上。我的意思是在视图中我有字符串“name”,当我去查看B时,我有一个标签从视图A发送的字符串中获取其文本,遗憾的是,这并没有显示出来。当我去看C时标签显示,当我回到视图B时,标签已被填充。如果我在查看B之前首先查看C,也会发生同样的情况。这是我的代码:

查看控制器:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:    (UIViewController *)viewController
{
self.secondViewController = (StudentViewController *) [tabBarController.viewControllers objectAtIndex:2];
self.secondViewController.stName = studentName;

self.thirdViewController = (TeacherViewController *) [tabBarController.viewControllers objectAtIndex:1];
self.thirdViewController.stName = studentName;

}

查看B控制器(其他视图设置相同):

.h文件

@property (nonatomic, strong) NSString *stName;

.m文件

-(void)viewWillAppear:(BOOL)animated {
studentName.text = stName;
[super viewWillAppear:animated];
}

我尝试在视图上添加这个加载方法,但没有运气。有什么想法吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我不是专家,但是从文档中我不清楚didSelectViewController甚至应该在视图出现之前被调用。为什么不尝试使用shouldSelectViewController?