智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述Swift - 从viewController访问AppDelegate窗口相关的知识,希望能为你提供帮助。
我在我的应用程序中进行了演练(入门流程),我想要一个跳过按钮。该按钮位于viewController上,因此我发现移动到另一个viewController的最佳方法是访问app delegate窗口。
但是,它一直让我得到一个AppDelegate.Type没有名为“window”的成员的错误。
@IBAction func skipWalkthrough(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
AppDelegate.window!.rootViewController = RootViewController
}
这种方法有什么问题吗?
提前致谢!
答案你有一个错字它应该是
appDelegate
而不是AppDelegate
。像这样:@IBAction func skipWalkthrough(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController = RootViewController
}
Swift 3.2
@IBAction func skipWalkthrough(_ sender: AnyObject) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window!.rootViewController = controller
}
另一答案这是有或没有故事板,它适用于swift3 +
let appDelegate = UIApplication.shared.delegate as? AppDelegate
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeController =mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
appDelegate?.window?.rootViewController = homeController
另一答案斯威夫特3
这是一种更好的方法:
if let window = NSApplication.shared().windows.first {
window.acceptsMouseMovedEvents = true;
}
另一答案您正在使用协议名称(即
AppDelegate
)而不是实例:应该:
appDelegate.window!.rootViewController = RootViewController
另一答案此解决方案适用于:登录/注册后以编程方式添加UITabbarController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController = tabs //()
appDelegate.window!.makeKeyAndVisible()
另一答案您可以从应用程序的任何位置访问标签栏。使用以下:
let appDelegate = UIApplication.shared.delegate as! AppDelegateif let tabBarController = appDelegate.window!.rootViewController as? UITabBarController {
if let tabItems = tabBarController.tabBar.items {
let tabItem = tabItems[2]
tabItem.badgeValue = "https://www.songbingjia.com/android/5" //enter any value
}
}
另一答案【Swift - 从viewController访问AppDelegate窗口】您还可以使用条件绑定来到达
window
。if let window = UIApplication.shared.windows.first {
// use window here.
}
推荐阅读
- UIViewController viewDidLoad vs. viewWillAppear(什么是适当的分工())
- mcapply(所有计划的核心在用户代码中遇到错误)
- Android studio ConstraintLayout大小调整问题
- 使用具有目的为“ android.rfid.INPUT”的意图的sendBroadcast
- App Engine模块之间的快速通信方式
- Unity IAP在Apple Testflight中不起作用
- 未找到模块'apple_sign_in'
- 如何使用C语言中的星号打印带有对角线的空心方形/矩形/矩形图案
- 使用React Native开发跨平台移动应用程序的路线图