2016-11-13 7 views
0

У меня есть контроллер вида, в котором есть только UITextView. У меня возникла проблема с инициализацией UITextView с другой, которую я передаю контроллеру представления.swift - Как правильно настроить UITextView

Вот код для контроллера представления:

(Класс File имеет строку переменной: имя, и переменная UITextView: содержание)

// MARK: Properties 
var file: File? 
@IBOutlet weak var textViewHome: UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 

    navigationItem.title = file?.name 
    self.automaticallyAdjustsScrollViewInsets = false 

    print(file?.content.text) 
    print(textViewHome.text) 
    textViewHome = file?.content 
    print(textViewHome.text) 
} 

Вывод этих заявлений печати являются:

Optional("hello") 

hello 

Поэтому переменная textViewHome устанавливается с правильной строкой, но при запуске приложения ничего не отображается в текстовом представлении. Я видел много вопросов, подобных этому, но не нашел того, где переменная UITextView.text верна, но ничего не появляется. Спасибо за любой совет

+2

Используйте 'textViewHome.text = файл? .content.text' вместо 'textViewHome = файл? .content' – ELKA

+0

я пробовал раньше, но Я фактически не удалял строку textViewHome = file ?.content. Как только я удалил его, он сработал. Мораль истории не устанавливает UITextViews равными друг другу. Спасибо @ELKA – bzimm01

+0

Фактически, текст, который вы установили, не находится в иерархии представлений, почему ничего не появилось. – ELKA

ответ

1

Основная проблема заключается в том, что ваша иерархия представлений (то, что отображается на экране) имела textViewHome, потому что это подкласс viewController.view. Когда вы изменили указатель textViewHome, иерархия представлений по-прежнему была старой, поскольку вы меняете указатель viewController, и вы не касались иерархии.

Улучшение дизайна: Лучше всего предоставить файлу строку, а не UITextView.

class File{ 
    var name: String 
    var content: String 
} 

В вашем ViewController, вы будете иметь

textViewHome.text = file?.content //content is a string 

 Смежные вопросы

  • Нет связанных вопросов^_^