2016-01-06 3 views
2

Итак, у меня есть контроллер вида, который имеет свойство IBOutlet, которое дает контроллеру представления доступ к добавленному представлению (вид, перетаскиваемый в контроллер просмотра в файле раскадровки, класс представления также имеет UILabel свойство outlet) Я пытаюсь изменить текст класса uilabel в классе. Сначала я пробовал напрямую, используя view.label.text = "некоторый текст", но это не сработало. Затем я написал функцию в классе вида, чтобы установить текст ярлыка, магически это сработало. Почему первый способ не работает, а второй?Swift Доступ к IBOutlet из другого класса

class Controller : UIViewController { 

    @IBOutlet weak var answerResultView: AnswerResultView! 

    @IBAction func button(sender : AnyObject){ 
     answerResultView.text = "some text" //this line doesn't work 
     answerResultView.setText("some text") 
    } 
} 

class TheView : UIView { 

    @IBOutlet weak var label : UILabel! 

    func setText(text : String){ 
     label.text = "Some text" 
    } 
} 

спасибо за любой ответ

+0

Что означает «не работает»? – jtbandes

+2

Убедитесь, что вы получаете доступ к выходам _after_ 'viewDidLoad()' вызывается для контроллера представления, которому принадлежат розетки. До этого они не инициализируются. –

+0

Вы назвали обе функции одновременно? – Lumialxk

ответ

1

Попробуйте

answerResultView.label.text = "some text" 
1

Во втором пути, вы вызываете метод представления, в котором вы установили текст метки.

Первый способ неправильный, поскольку вы пытаетесь установить текст представления вместо его метки. Использование

answerResultView.label.text = "some text" 
Смежные вопросы