2015-11-25 2 views
0

Я установил ViewController() как sharedInstance. Когда я пытаюсь огонь функцию из другого просмотра общая функция возвращаетSwift 2 - sharedInstance function return no

fatal error: unexpectedly found nil while unwrapping an Optional value

Я не понимаю, почему дает мне ошибку, используя sharedInstance и она работает хорошо, если я вызываю функцию из внутри `ViewController»

class ViewController: UIViewController { 

static let sharedInstance = ViewController() 

@IBOutlet weak var playBtn: UIButton! 

/// 

/// 

func audioPlayerIsNotPlaying() { 

     print("stop") //runs 

     playBtn.selected = false //fatal error: nil 
     playBtn.setImage(UIImage(named: "playBtn.png"), forState: UIControlState.Normal) //fatal error: nil 

    } 

} 

Second View Controller:

ViewController.sharedInstance.audioPlayerIsNotPlaying() 

Почему объект playBtn кнопка возвращается nil?

ответ

2

В представлении, созданном программно, не будет установлено розетки. Вам нужно создать экземпляр из ниба или раскадровки.

+0

спасибо, но я установил свои выходы в раскадровке – SNos

+0

, однако, если я вызову функцию из второго представления с помощью 'postNotificationName', функция называется – SNos

1

Чтобы подключить розетки контроллера зрения, вы должны создать его через раскадровку (или NIB). Например, если вы собираетесь попробовать иметь static ссылку на контроллер представления, вы могли бы сделать что-то вроде:

static let sharedInstance = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("identifier") 

В противном случае выходы будут nil.

+0

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

+0

также для работы я должен был добавить 'как! ViewController' в конце – SNos

+0

@SNos - Да, если вам нужно было это как «ViewController», а не просто «UIViewController», то, очевидно, бросить его соответствующим образом. В вашем вопросе ничего не было, предполагая, что вам нужно это как «ViewController», но если да, то бросьте его. – Rob