2016-11-13 81 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行。一旦我刪除它的工作。故事的道德不會將UITextView設置爲彼此相等。謝謝@ELKA – bzimm01

+0

實際上,您設置的textView不在視圖層次結構中,因此沒有任何結果。 – ELKA

回答

1

主要問題是您的視圖層次結構(屏幕上顯示的是什麼)有textViewHome,因爲它是viewController.view的子視圖。當您更改textViewHome的指針時,視圖層次結構仍保留舊的視圖層次結構,因爲您更改了viewController的指針,並且您沒有觸摸該層次結構。

設計改進:最好讓File擁有一個字符串而不是UITextView。

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

在你的viewController,您將有

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