Tôi có một UITable chứa một số UITableCells hải quan. Các ô này chứa một vài UILabels và UITextField. Nguồn dữ liệu của bảng đến từ thuộc tính của bộ điều khiển chính. (Bộ điều khiển này cũng là đại biểu và dataSource cho bảng).Tải lại một UITable khi đang di chuyển khi chỉnh sửa một UITextField bên trong một trong các ô
Dưới đây là một ảnh chụp màn hình đơn giản của giao diện người dùng:
Bây giờ, tôi cần phải cập nhật "on the fly" nội dung của tất cả các UILabels khi người dùng chỉnh sửa một trong những UITextFields. Để làm như vậy, tại tôi đang nghe sự kiện "Chỉnh sửa đã thay đổi" ở cấp UITextField. Điều này dẫn tới những hành động sau đây:
- (IBAction) editChangeHandler: (id) sender {
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
[delegate.viewController reloadRows];
}
Phương pháp reloadRows trong viewController là như vậy:
- (void) reloadRows {
NSLog(@"called reloadRows");
//perform some calculations on the data source objects here...
[theUITable reloadData];
}
Vấn đề của tôi ở đây là bất cứ khi nào người dùng thay đổi giá trị trong lĩnh vực này, phương pháp reloadRows là thành công được gọi, có vẻ như reloadData nhưng nó cũng khiến bàn phím bị loại bỏ.
Vì vậy, cuối cùng, người dùng chỉ có thể chạm vào một phím khi chỉnh sửa TextField trước khi bàn phím bị loại bỏ và bảng được tải lại.
Có ai biết giải pháp cho vấn đề này hoặc đã gặp phải vấn đề tương tự không?
Arf! Cảm ơn bạn ! Việc loại bỏ bàn phím thực sự được giải thích bằng cách thiết lập lại trạng thái ô. Làm thế nào tôi có thể không thấy điều đó?:-) Kể từ khi tôi cần các nhãn của hàng hiện tại được cập nhật là tốt, tôi đã kết thúc theo đề nghị thứ hai của bạn và đã viết một phương pháp mới trong bộ điều khiển mà chỉ cập nhật nhãn của các hàng riêng lẻ. – Saze