2016-02-14 2 views
0

Я создал текстовое представление программно, и у меня есть внешняя функция снаружи viewdidload, внутри которой я хочу изменить содержимое этого текстового представления. Как мне это достичь? Вот код, который я работаю с Как все выглядит. В настоящее время я получаю эту ошибку «Значение типа« UIView »не имеет элемента« textView »на линии
self.view.textView.text =« Yo Dawg !! »Как получить доступ к программно созданному объекту пользовательского интерфейса из функции члена calss

class rootViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let myTextView = UITextView(frame: CGRectMake(0,0,100,50)) 
     myTextView.backgroundColor = UIColor.clearColor() 
     myTextView.textColor = UIColor.whiteColor() 
     myTextView.font = UIFont (name: "Helvetica Neue", size: 20) 
     myTextView.textAlignment = NSTextAlignment.Center 
     myTextView.text = "Hello World" 

     self.view.addSubview(timerView) 

    }//End view did load 



    func changeText(){//This function updates the text within the textview 
     self.view.textView.text = "Yo Dawg!!" 
    }//End change text function 

}//End rootViewController 

ответ

0

Вам необходимо сохранить ссылку на ваш взгляд текста в переменной экземпляра/собственности, а не в локальной переменной:

class rootViewController: UIViewController { 

    var myTextView:UITextView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.myTextView = UITextView(frame: CGRectMake(0,0,100,50)) 
     self.myTextView.backgroundColor = UIColor.clearColor() 
     self.myTextView.textColor = UIColor.whiteColor() 
     self.myTextView.font = UIFont (name: "Helvetica Neue", size: 20) 
     self.myTextView.textAlignment = NSTextAlignment.Center 
     self.myTextView.text = "Hello World" 

     self.view.addSubview(timerView) 

    }//End view did load 



    func changeText(){//This function updates the text within the textview 
     self.myTextView.text = "Yo Dawg!!" 
    }//End change text function 

} 
+0

Paulw11 Я понимаю ваши рассуждения, но это не работает. Я получаю эту ошибку "член типа rootViewController не имеет члена myTextView" Решение, предоставленное Seto выше, однако, работает –

+0

Проверьте свой ввод. – Paulw11

+0

IIRC, вам не нужно вызывать переменную, используя 'self.' больше в swift. Поэтому вместо вызова 'self.myTextView.text =' вы можете просто написать 'myTextView.text ='. –

0

Вы можете присвоить уникальный тег в TextView и использовать его получите ссылку.

override func viewDidLoad() { 
    super.viewDidLoad() 

    let myTextView = UITextView(frame: CGRectMake(0,0,100,50)) 
    myTextView.backgroundColor = UIColor.clearColor() 
    myTextView.textColor = UIColor.whiteColor() 
    myTextView.font = UIFont (name: "Helvetica Neue", size: 20) 
    myTextView.textAlignment = NSTextAlignment.Center 
    myTextView.text = "Hello World" 

    myTextView.tag = 1 

    self.view.addSubview(timerView) 
} 



func changeText(){ 
    if let myTextView = self.view.viewWithTag(1) as? UITextView { 
     myTextView.text = "Yo Dawg!!" 
    } 
} 
+0

Спасибо, это работает !! :) –