2011-05-31 36 views
0

我正在使用UIScrollView在我的UITextView後面創建橫格紙的錯覺(我必須使用單獨的UIScrollView,以便可以有邊距)。爲了用正確的行數繪製紙張,我需要將它傳遞給UITextView的contentSize.height我在哪裏可以加載需要了解Ivar內容的視圖?

這是目前發生的事情:

  1. 用戶從父視圖控制器表中選擇一個音符。
  2. 父視圖控制器設置textview.text屬性,以便我的UITextView將知道顯示哪些文本。

如果我在viewWillAppear中設置了我的UIScrollView,它將不起作用,因爲textView.text尚未設置,所以textView.contentSize.height爲零。但是,如果我在viewDidAppear中設置它,雖然它起作用,但這些線條顯示在文本後面。

這是怎麼回事?

回答

1

只需嘗試在推送子視圖控制器之前設置屬性。

我假設你的代碼是像父視圖控制器:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIViewController* childViewController = ... 
    [self.navigationController pushViewController:childViewController animated:YES]; 
    childViewController.text = ... 
    [childViewController release]; 
} 

也許只是一味

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIViewController* childViewController = ... 
    childViewController.text = ... 
    [self.navigationController pushViewController:childViewController animated:YES]; 
    [childViewController release]; 
} 
+0

這是我嘗試的第一件事,但如果那樣做,文字變成空白!也許我應該嘗試設置一個單獨的文本屬性,然後只從viewWillAppear中分配實際的textview.text ...在一分鐘內... – 2011-05-31 15:53:03

+0

這可能是您調用'UITextView'時未加載視圖。您可以嘗試覆蓋textView的getter並檢查視圖是否加載了「isViewLoaded」。如果沒有加載,只需做! – gcamp 2011-05-31 15:55:38

+0

剛剛嘗試過使用不同的屬性......我似乎無法設置屬性,直到我將子視圖控制器推入堆棧之後。 – 2011-05-31 15:55:54

1

你應該事實上之前初始化所有的你的意見-viewDidLoad ... 在調用-viewDidLoad時,您的視圖尚未完全加載。

如果您需要在控制器之間傳遞數據,您可以在其中一個控制器中定義一個屬性並設置其值。其他控制器會在需要時讀取該屬性。

具體而言,在 - viewDidLoad中,您可以使用存儲在屬性中的值初始化您的UI項目。

1

你想要的是一個簡單的NSString *noteText伊娃在子視圖控制器上,並使其像@property (nonatomic, copy) NSString *noteText一樣propery併合成它。然後,隨着gcamp建議這樣做:在YourChildController viewDidLoad中

YourChildController *childVC = ... 
child.noteText = @"your selected note text here"; 
[self.navigationController pushViewController:childVC animated:YES]; 
[childVC release]; 

然後:

myTextView.text = noteText; 
[myTextView sizeToFit]; // not sure if you need to do this or not 

// now you can setup your background scroll view as needed 

如果不工作,你可以嘗試安裝在你的viewWillAppear中的滾動視圖:方法。

相關問題