2014-09-22 68 views
2

好吧,標題可能有點誤導,但我不確定如何正確描述它。但無論如何,這裏我們去:UITextField在加載所有內容後設置文本

我有一個UIViewController(在UITabBarController)其中包含UITextField。當推到導航堆棧這個視圖控制器我得做的UITextField一些工作:

我把字符串的UITextField內,並再次對其進行處理(這一切發生時,視圖控制器負載(目前viewDidLoad()方法內))。爲了處理它們,我需要計算字符串在UITextField內佔據的矩形。

var pos1 = tagTextField.positionFromPosition(tagTextField.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 0) 
var pos2 = tagTextField.positionFromPosition(tagTextField.endOfDocument, inDirection: UITextLayoutDirection.Right, offset:0) 
var rectForButton = tagTextField.firstRectForRange(tagTextField.textRangeFromPosition(pos1, toPosition: pos2)) 

確切地說,這裏是我的問題。當視圖被加載時這樣做時,tagTextField包含文本,但不顯示文本,因此rectForButton沒有任何寬度。

我對這個問題的想法是,我必須在某個時候運行這個(我試過viewWillAppear()viewDidAppear()等,但沒有奏效)。

任何人有任何想法如何解決這個問題?基本上總結一下,我需要一個在涉及UIViewController的事情發生後調用的方法。

不知道這是否任何意義的,但我用斯威夫特和XCode的6(包括最新發布的)工作

感謝

編輯:

顯然tagTextField.beginningOfDocument是零,而tagTextField不是零。任何人有任何想法如何解決這個問題?

+0

爲什麼不在完成視圖控制器本身的所有準備工作後調用方法來設置文本?它是完全可控的,當你將文本設置爲UITextField時,只需在完成所有設置後執行。 – Sandeep 2014-09-22 12:35:07

+0

是的,但是當我將它設置在viewDidLoad,viewDidAppear等內部時,文本仍然不會立即顯示。我不知道爲什麼。 – c2programming 2014-09-22 12:42:30

+0

好吧,顯然我使用舊的測試版而不知道它(我安裝了最新版本,但它打開舊的測試版,現在我至少得到一個錯誤,某事是零)不知道,但如果這是解決方案我的錯誤 – c2programming 2014-09-22 12:52:37

回答

2

您的文本框是否來自界面構建器?你可以在viewDidLayoutSubviews函數中試試它。

+0

我會嘗試。謝謝 – c2programming 2014-09-23 19:21:24

+0

我有不同的問題-UITextField.beginningOfDocument在viewDidLoad,viewWillAppear中返回nil,但在viewDidLayoutSubviews中都可以。 感謝您的回答 – 2015-06-12 06:47:51

相關問題