teh*_*afe 22 uiviewcontroller uinavigationcontroller ios appdelegate swift
按照一些指南遇到问题,特别是 http://blog.originate.com/blog/2014/04/22/delinklinking-in-ios/
我正在设置网址方案,它可以很好地从另一个应用程序启动应用程序,但传入主机或网址似乎不应该正常工作.我正在为所有视图布局使用故事板和界面构建器.
该指南在appDelegate中显示了这个openURL:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
if([[url host] isEqualToString:@"page"]){
if([[url path] isEqualToString:@"/page1"]){
[self.mainController pushViewController:[[Page1ViewController alloc] init] animated:YES];
}
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的版本简化,并从其他一些来源迅速,即 获取ViewController的实例从AppDelegate在Swift中我正在跳过url主机的条件,以删除问题中潜在的其他变量.
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
var rootViewController = self.window!.rootViewController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var profileViewController = mainStoryboard.instantiateViewControllerWithIdentifier("profile") as ProfileViewController
rootViewController.navigationController.popToViewController(profileViewController, animated: true)
return true
}
Run Code Online (Sandbox Code Playgroud)
swift版本导致崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
似乎rootViewController还没有navigationController呢?
Kum*_* KL 26
SWIFT 4: 使用条件绑定和链接推送的安全方式
if let navController = self.navigationController, let viewController = self.storyboard?.instantiateViewController(withIdentifier: "indentfier") as? CustomViewController{
navController.pushViewController(viewController, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
在一行代码中:
斯威夫特3:
self.navigationController!.pushViewController(self.storyboar??d!.instantiateViewCo??ntroller(withIdentif??ier: "view2") as UIViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
self.navigationController!.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("view2") as UIViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
teh*_*afe 25
在我的情况下,似乎rootViewController实际上是UINavigationController类型,所以在声明中将它转换为允许我直接在其上调用pushToViewController.
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
let rootViewController = self.window!.rootViewController as! UINavigationController
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let profileViewController = mainStoryboard.instantiateViewController(withIdentifier: "InstructionVC") as! InstructionVC
rootViewController.pushViewController(profileViewController, animated: true)
return true
}
Run Code Online (Sandbox Code Playgroud)
APPDELEGATE TO PAGE:
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let loginPageView = mainStoryboard.instantiateViewControllerWithIdentifier("leadBidderPagerID") as! LeadBidderPage
var rootViewController = self.window!.rootViewController as! UINavigationController
rootViewController.pushViewController(loginPageView, animated: true)
Run Code Online (Sandbox Code Playgroud)
PAGE到PAGE:
let loginPageView = self.storyboard?.instantiateViewControllerWithIdentifier("scoutPageID") as! ScoutPage
self.navigationController?.pushViewController(loginPageView, animated: true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59224 次 |
| 最近记录: |