我有一个在tabbar类中运行的计时器,每次调用时都会将数据保存到云端。然后我希望它在当前选择的视图控制器上调用一个方法来告诉用户保存了什么。我这样做有以下几点。
if (self.selectedIndex == 1) {
MessagesViewController *msgView = [[MessagesViewController alloc]init];
NSLog(@"Running");
[msgView testMethod];
}
这是有效的,如果选择选项卡,则会调用该方法。
NSString *teststring = [formatter stringFromDate:todaysDate];
NSLog(@"%@", teststring);
self.TestLab.text = teststring;
每次都会显示NSlog,但标签文本未更新。 我确信它很简单,但我无法提出解决方案。
答案 0 :(得分:2)
此
MessagesViewController *msgView = [[MessagesViewController alloc]init];
分配MessagesViewController
的新实例。它不会为您提供当前活动的视图控制器实例的引用。该方法在这个新实例上执行,因此您获得了NSLog
输出,但文本字段很可能是nil
,而且至少不在屏幕上。
您可以使用selectedViewController
的{{1}}属性来获取当前选定的视图控制器。
UITabBarController
答案 1 :(得分:-2)
既然它是一个计时器,它可能在另一个线程上?并且您无法在主线程之外的任何其他线程中更新UI。试试这个:
pickle