我正在努力解决以下问题:
我正在使用方法
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
从extern设置Serverstring。因此,当我调用myapp:// serverurl / url时,字符串 url 被正确设置为 NSUSerDefaults Key 。到目前为止工作正常。 但是,当我目前在我的应用程序的设置视图中,您可以手动设置此变量并且我从Mail-App调用上面的URL时,它设置变量,但不更新视图的相应文本字段。所以旧字符串仍然写在Textfield中,但在 NSUSerDefaults 中正确更新。
我尝试使用通知中心。我绑定了以下方法:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateServerURLTextField) name:UIApplicationWillEnterForegroundNotification object:nil];
- (void)updateServerURLTextField
{
NSLog(@"Updating Serveraddress label");
NSString* serverFullURL = [[NSUserDefaults standardUserDefaults] objectForKey:wServerFullURLKey];
self.serverURLTextField.text = serverFullUrl;
}
通知被解雇, updateServerURLTextField 也被解雇,但未更新。我假设一些比赛时间条件?
- (void)applicationDidBecomeActive:(UIApplication *)application
在通知被触发后调用。也许GUI在应用程序处于活动状态之前无法更新?
任何人都有一些提示?
答案 0 :(得分:0)
您无法以这种方式更新UI。 UI的所有更改都需要在主线程上进行。您可以考虑使用:PerformSelectorOnMainThread:withObject:waitUntilDone: