我是ios(android dev)的新手
我正在处理从url打开我的应用程序,我在AppDelegate
中使用当前方法获取了url。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
return YES;
}
我的链接中有某些参数,我想用它来填充textField
的{{1}}。
我可以与LoginViewController
的{{1}}进行沟通吗?考虑LoginViewController
已经做过载。
答案 0 :(得分:1)
您可以在appDelegate
中定义一个属性,例如strName。
然后你必须从这个方法中分配它的值
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
//for example
self.strName = [url query];
return YES;
}
现在您可以从任何地方访问此属性。
在appDelegate
viewController
的实例
#define AppDel ((AppDelegate *)[UIApplication sharedApplication].delegate)
然后分配如下
textfield.text = AppDel.strName;
答案 1 :(得分:0)
您可以通过多种方式与控制器通信:
viewWillAppear
或viewDidAppear
方法提取。NotificationCenter
答案 2 :(得分:-1)
您可以在appDelegate
中定义一个属性,例如strName。
然后你必须从这个方法中分配它的值
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
//for example
self.strName = [url query];
return YES;
}
现在您可以从任何地方访问此属性。
在appDelegate
viewController
的实例
#define AppDel ((AppDelegate *)[UIApplication sharedApplication].delegate)
然后分配如下
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
//for example
textfield.text = AppDel.strName;
}
每次从任何控制器推送或弹出时, viewWillAppear
都会调用。