trong ứng dụng của tôi Tôi có một UITabeView
với UITextField
s bên trong mỗi ô. Tuy nhiên, tôi đang gặp khó khăn khi triển khai các nút trước/tiếp theo để làm cho trường văn bản bên trong/UITableViewCell
trước đó là tiếp theo.Thực hiện Prev./Các nút tiếp theo trong UITableView để trả lời đầu tiên UITextField trong ô không hiển thị
Tôi đã phân lớp là lớp UITableViewCell
để gọi phương thức nhất định là delegate
khi nút prev //extext được nhấn và chuyển chính ô đó làm tham số của phương thức này (để tôi có thể lấy đường dẫn chỉ mục của nó) để tính toán mà là con đường chỉ số của tế bào mà trường văn bản đã được thực hiện trả lời đầu tiên)
trong việc thực hiện các phương pháp của đại biểu I:
- lấy đường dẫn chỉ số của các tế bào nút mà đã ép
- cộng hoặc trừ 1 từ chỉ mục pa thứ của tế bào đó (tùy thuộc vào nút được nhấn)
- có được các tế bào mà textfield phải được thực hiện trả lời đầu tiên sử dụng phương pháp
-cellForRowAtIndexPath:
trên xem bảng - làm cho lĩnh vực văn bản đầu tiên trả lời khi
Vấn đề là phương thức -cellForRowAtIndexPath:
chỉ trả về ô nếu nó hiển thị. Vì vậy, khi các tế bào là không nhìn thấy nó sẽ trở lại nil
và các thuật toán trên sẽ không hoạt động trong khi khi các tế bào trên màn hình nó sẽ hoạt động chính xác.
Đây là mã của tôi cho mục đích trước. nút, với điều kiện MUInfoMateriaTableViewCell
là lớp con của tôi về UITableViewCell
và rằng nó có một tài sản mà trả lĩnh vực văn bản của nó textField
:
- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}
Có cách nào để "có được" một tế bào đó không phải là nhìn thấy được vì vậy tôi có thể làm cho văn bản của mình trường trả lời đầu tiên? Hoặc bạn có thể gợi ý cho tôi một thuật toán khác để giải quyết vấn đề này không?
Bạn đề xuất thế nào để theo dõi ô có trường văn bản sẽ trở thành trả lời đầu tiên? Tôi có nên có một ivar có tên là 'activeCellIndexPath' và kiểm tra xem đường dẫn chỉ mục của ô hiện hoạt có khớp với đường dẫn chỉ mục của ô được chuyển thành tham số trong' tableView: willDisplayCell: forRowAtIndexPath: 'hay là có hiệu quả hơn/hiệu quả hơn tiếp cận? – BigLex
Tôi sẽ thực hiện chính xác cách bạn mô tả nó. Hãy chắc chắn để xử lý các trường hợp mà bạn không muốn làm cho bất kỳ tế bào trả lời và 'nil' ra' activeCellIndexPath'. – jszumski
Ok! cảm ơn ngài! – BigLex