2011-11-24 71 views
0

好吧,我知道這裏已經有很多這方面的問題了,但是我一直沒能找到任何需要的東西。我可以直接編輯UITableView單元格的textLabel嗎?

我有一個UITableViewCell,我希望能夠選擇(通過didSelectRowAtIndexPath:處理觸摸),然後通過允許用戶開始編輯單元格textLabel的內容來響應該選擇。我需要一個標籤,因爲我需要多行文本。
我需要單元格的高度隨着用戶輸入越來越多的文本而增長。

我需要子類UITableViewCell並有我自己的標籤或textView我猜?或者我可以使用已經存在的textLabel?

請指教!

回答

1

我可能會建議做什麼,或至少嘗試作爲最好的選擇,是爲每個單元格創建一個文本字符串數組(NSString)。當然,你知道你可以在一個特定的點上編輯一個數組,所以知道你選擇的單元格可以讓你知道要編輯哪個字符串。從這裏當一個標籤文本被編輯時,只需調用: [tableView reloadData]

它應該爲您更新!

+0

謝謝您的回答。那麼我應該如何讓鍵盤出現,用戶可以編輯文本標籤內容? – Lizza

+0

這取決於你想如何美化你的應用程序。就我個人而言,我會拋出一個佔用屏幕上半部分的UITextView,並將其分配爲FirstResponder以顯示下半部分的鍵盤。當你在表格中選擇一個單元格時,只有當UITextView可見時,並且當鍵盤上的「DONE」按鈕有一個方法可以resignFirstResponder並隱藏你的UITextView。 – Brayden

1

我有你的解決方案,你到底需要什麼。即使我遇到了這個問題&也找到了解決方案。用這個link檢查。你需要更多的工作,在這個例子中,以動態的細胞

1
  • 首先的大小,你應該能夠計算使用 的NSString的sizeWithFont:constrainedToSize:lineBreakMode:法文本的框架。

  • 在你的UITableView代理器 tableView:heightForRowAtIndexPath:方法。計算每個單元格中 文本的高度,還包括填充和其他所有 可能需要的值。我也會緩存這個值直到文本被改變。

  • 子類UITableViewCell。這裏有兩個變體:

    1. 將UITextView添加到單元格每次用戶想要編輯文本並在此之後將其刪除。
    2. 使用UITextView顯示和編輯文本(它具有editable屬性)。但我不確定它會如何快速進入桌子,我沒有親自測試過。

    我在我的應用程序中使用了第一個變體。

  • 您可以繼承UITextView,或使用其委託方法在用戶鍵入內容時更新其高度。

  • 將高度更改傳播到您的UITableView代理。

調用下面的代碼來更新動畫細胞:

[self.tableView beginUpdates]; 
[self.tableView endUpdates]; 
相關問題