是否可以禁用另一个视图中的按钮?
如果我尝试这样做:
refreshbutton.enabled = false
我在两个.swift文件中都有这个:
@IBOutlet var refreshbutton: UIBarButtonItem!
程序停止,我收到致命错误。
编辑:
我试过以下:
let otherviewcontroller: SerialViewController = SerialViewController (nibName: nil, bundle: nil)
let button1 = otherviewcontroller.refreshbutton
let loading1 = otherviewcontroller.loading
loading1.showLoading2()
button1.enabled = false
为什么我能够访问另一个控制器中的showLoading2()函数,但为什么我不能访问该按钮?它抛出一个致命的例外并说" button1"是零,但为什么?
答案 0 :(得分:1)
您可以在UIViewController
内禁用左侧导航按钮,而不使用任何IBOutlet
:
self.navigationItem.leftBarButtonItem.enabled = NO
要禁用右侧导航按钮:
self.navigationItem.rightBarButtonItem.enabled = NO
答案 1 :(得分:0)
显然是可能的。你只需要首先引用viewController,然后访问该SerialViewController的“refreshbutton”
示例 -
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
if let otherviewcontroller = appDelegate.window?.rootViewController as? SerialViewController {
let button1 = otherviewcontroller.refreshbutton
let loading1 = otherviewcontroller.loading
loading1.showLoading2()
button1.enabled = false
}
答案 2 :(得分:0)
您只需发送通知&在要禁用它的类中观察它
可以使用您想要禁用按钮的视图中的以下代码发送通知
NSNotificationCenter.defaultCenter().postNotificationName("kDiableRefreshButton", object: nil)
在课程中接收要禁用按钮的通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "diableRefreshButtonNotification:", name:"kDiableRefreshButton", object: nil)
将代表通知调用的实现方法
func diableRefreshButtonNotification(notification: NSNotification){
//Disable your button or Do whatever stuff you want
}
请勿忘记在视图获取dealloc时删除通知
NSNotificationCenter.defaultCenter().removeObserver(self, name: "kDiableRefreshButton", object: nil)