UIViewController 类型的值在 Xcode 7 更新后没有成员 topViewController
Value of type UIViewController has no member topViewController after Xcode 7 update
在我更新到 Xcode 7 之后,我收到这个错误 "Value of type UIViewController
has no member topViewController." 还有其他人 运行 遇到这个问题吗? topViewController
不再是 UIViewController
的一部分了吗?
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = self.editButtonItem()
let addButton = UIBarButtonItem(barButtonSystemItem: .Search,
target: self, action: "addButtonPressed:")
self.navigationItem.rightBarButtonItem = addButton
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController =
controllers[controllers.count-1].topViewController as? ### Error heres
DetailViewController
}
model = Model(delegate: self) // create the Model
model.synchronize() // tell model to sync its data
self.navigationController?.toolbarHidden = false;
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"Home", style:.Plain, target:nil, action:nil)
}
您必须明确表示,以便它知道您正试图从 UINavigationController
中获取 topViewController
in Swift 2:
self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController
Simple Do this
extension UIApplication {
class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let navigationController = controller as? UINavigationController {
return topViewController(controller: navigationController.visibleViewController)
}
if let tabController = controller as? UITabBarController {
if let selected = tabController.selectedViewController {
return topViewController(controller: selected)
}
}
if let presented = controller?.presentedViewController {
return topViewController(controller: presented)
}
return controller
}
}
用法
UIApplication.topViewController()
在我更新到 Xcode 7 之后,我收到这个错误 "Value of type UIViewController
has no member topViewController." 还有其他人 运行 遇到这个问题吗? topViewController
不再是 UIViewController
的一部分了吗?
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = self.editButtonItem()
let addButton = UIBarButtonItem(barButtonSystemItem: .Search,
target: self, action: "addButtonPressed:")
self.navigationItem.rightBarButtonItem = addButton
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController =
controllers[controllers.count-1].topViewController as? ### Error heres
DetailViewController
}
model = Model(delegate: self) // create the Model
model.synchronize() // tell model to sync its data
self.navigationController?.toolbarHidden = false;
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"Home", style:.Plain, target:nil, action:nil)
}
您必须明确表示,以便它知道您正试图从 UINavigationController
中获取 topViewController
in Swift 2:
self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController
Simple Do this
extension UIApplication {
class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let navigationController = controller as? UINavigationController {
return topViewController(controller: navigationController.visibleViewController)
}
if let tabController = controller as? UITabBarController {
if let selected = tabController.selectedViewController {
return topViewController(controller: selected)
}
}
if let presented = controller?.presentedViewController {
return topViewController(controller: presented)
}
return controller
}
}
用法
UIApplication.topViewController()