在应用程序中更新视图中的标签:openURL:sourceApplication:annotation:被调用

时间:2014-02-18 12:28:57

标签: ios iphone objective-c ipad

我正在努力解决以下问题:

我正在使用方法

(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在应用程序处于活动状态之前无法更新?

任何人都有一些提示?

1 个答案:

答案 0 :(得分:0)

您无法以这种方式更新UI。 UI的所有更改都需要在主线程上进行。您可以考虑使用:PerformSelectorOnMainThread:withObject:waitUntilDone: