簡體   English   中英

將文本保留在UITableViewCell內的UITextView中

[英]Keep text in UITextView inside UITableViewCell

我有一個UITableViewCell的子類,該子類在父ViewController viewDidLoad事件(表視圖所在的位置)上加載一個筆尖。 這個UITableViewCell內部有一個UITextView。 想法是,用戶在此textView中輸入文本,並且當按下按鈕時,它將在NSUserDefaults中保存該文本(問卷調查的答案)。

我的問題是我無法從textviews中讀取文本。 當用戶輸入文本並且表視圖上下滾動時,我可以看到文本被保留,因此必須將其存儲在某個位置的內存中,這發生在cellForRowAtIndexPath中。 為了收集文本,我調用了相同的方法,但是返回的單元格為nil。 因此,滾動時似乎保留了文本,但是如果以編程方式調用該方法,則不會返回該單元格。 我不確定如何跟蹤此文本,我也嘗試了didEndDisplayingCell方法,但有時無法調用,因此不可靠。

筆尖注冊:

UINib *nib = [UINib nibWithNibName:@"QuestionCell" bundle:nil];
[[self tableViewOutlet] registerNib:nib forCellReuseIdentifier:cellIdentifier];

cellForRowAtIndexPath:

QuestionCell *cell = [tableViewOutlet dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell.indexPath){
    cell.indexPath = indexPath;//Setup cell ...

嘗試獲取單元格內textView內的文本(如果不可見,則返回nil):

QuestionCell *cell = (QuestionCell *)[tableViewOutlet cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

您不應該依賴於表格視圖來保留輸入了正確文本的文本字段。 一旦將TableViewCell滾動到屏幕之外,它將被TableView重用,並且用戶輸入的值可能會被覆蓋。

相反,您應該將ViewController注冊為UITextView的委托,並在每次按鍵時更新TableView的數據源對象。 然后,您將可以在需要時從該數據源對象中讀取用戶輸入的文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM