2009-06-07 23 views
7

Tôi đã thiết lập UITableView với một số UITableViewCell tùy chỉnh có một số UITextField và UISwitch's (dựa trên Settings.app). Câu hỏi của tôi là, khi người dùng nhấp vào nút Lưu trong thanh điều hướng, cách đánh bại để truy cập vào các trường văn bản này và chuyển điều khiển để lưu giá trị của chúng là gì?Xem bảng iPhone: Cách truy cập trường văn bản tùy chỉnh TableViewCell

Trả lời

15

Đề xuất của tôi là không sử dụng tùy chỉnh UITableViewCell s. Tôi đã từng làm theo cách của bạn, nhưng có một cách tốt hơn nhiều. Sử dụng thuộc tính accessoryView của UITableViewCell, mà bạn có thể chỉ định một chế độ xem tùy ý, chẳng hạn như UITextField hoặc UISwitch. Nó hiển thị chính xác như trong ứng dụng Cài đặt.

Sau đó, khi bạn cần phải truy cập vào nó, chỉ cần sử dụng

NSString *text = ((UITextField *)cell.accessoryView).text; 

Tuy nhiên, bạn phải cẩn thận về việc thiết lập các tế bào và truy cập vào các giá trị của họ. Nếu bất kỳ ô nào bị tắt màn hình, nó sẽ bị xóa và bạn sẽ không thể truy cập vào trường văn bản. Những gì bạn muốn làm khi thiết lập di động của bạn là:

cell.accessoryView = nil; //Make sure any old accessory view isn't there. 
if (/*cell needs text field*/) { 
    UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease]; 
    textField.text = savedValue; 
    cell.accessoryView = textField; 
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged]; 
} 

... 

- (void) textChanged:(UITextField *)source { 
    self.savedValue = source.text; 
} 
+0

Điều gì sẽ xảy ra nếu tôi có nhiều ô với trường văn bản (như thêm chế độ xem số liên lạc trên ứng dụng danh bạ)? Tôi có nên thêm phương pháp khác cho mỗi chế độ xem không? – Rodrigo

+0

Tìm thấy ở đây http://stackoverflow.com/questions/3572377/iphone-how-to-read-the-data-in-uitableview/3572595#3572595 mà bạn có thể thay đổi các thẻ cho các trường văn bản, vì vậy tôi có thể có một phương pháp và bật nó lên. – Rodrigo

+4

Tôi sử dụng UIControlEventEditingDidEnd. UIControlEventValueChanged dường như không được gọi là:? – whatever0010011

0

Nếu bạn không làm theo đề nghị của Ed, bạn có lẽ tốt nhất giữ lại xem văn bản của bạn vào ô tùy chỉnh và thêm một tài sản để truy cập vào xem.

0

Bạn cũng có thể để các ô tùy chỉnh giữ tham chiếu đến bộ điều khiển chế độ xem cấp cao hơn và gửi thông báo khi người dùng cập nhật giá trị trong đó. Về cơ bản, sao chép mẫu đại biểu được sử dụng bởi nhiều đối tượng thư viện trong UIKit.

Các vấn đề liên quan