2016-05-05 6 views
0

можно ли отключить кнопку, которая находится на другом экране?Отключить кнопку в другом виде

Если я пытаюсь сделать это:

refreshbutton.enabled = false 

У меня есть это в обоих .swift файлов:

@IBOutlet var refreshbutton: UIBarButtonItem! 

программа останавливается, и я получаю фатальную ошибку.

EDIT:

Я попробовал следующее:

let otherviewcontroller: SerialViewController = SerialViewController (nibName: nil, bundle: nil) 
let button1 = otherviewcontroller.refreshbutton 
let loading1 = otherviewcontroller.loading 
loading1.showLoading2() 
button1.enabled = false 

Почему я смог получить доступ к функции showLoading2() в другом контроллере, но почему я не могу получить доступ к кнопке? Он выдает фатальное исключение и говорит, что «button1» - ноль, но почему?

+1

Это может помочь разместить код программы и конкретной ошибки вы получаете. – gobrewers14

+0

Вы должны сделать имена уникальными. Хотя это необязательно, это поможет вам убедиться, что вы вызываете правильное свойство на правильной кнопке. – fsb

ответ

0

Возможно, это возможно. Вы просто MEED ссылаться, что ViewController первым, а затем получить доступ к «refreshbutton» этого SerialViewController

Пример -

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 
} 
+0

Я пробовал это, но он не выполнен, потому что viewController - это нуль!? У вас есть идеи? – Manuel

+0

Можете ли вы поделиться кодом со мной, я был бы способен помочь лучше. –

+0

Я отредактировал свое первое сообщение с кодом, который я использую. спасибо за вашу помощь – Manuel

0

Вы можете отключить кнопку навигации слева от внутри UIViewController, как это, без использования каких-либо IBOutlet:

self.navigationItem.leftBarButtonItem.enabled = NO 

Чтобы отключить правую кнопку навигации:

self.navigationItem.rightBarButtonItem.enabled = NO 
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) 
Смежные вопросы