在另一个视图中禁用按钮

时间:2016-05-05 16:21:35

标签: ios swift button

是否可以禁用另一个视图中的按钮?

如果我尝试这样做:

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"是零,但为什么?

3 个答案:

答案 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)