Tôi có UITableView tĩnh, nội dung của mỗi ô mà tôi đã tạo trong bảng phân cảnh, nhưng tôi cần thay đổi texLabels của một số ô theo chương trình trong khi chạy. Tôi làm nó như thế nào?Thay đổi nhãn văn bản trong các ô tĩnh trong UITableView
Trả lời
Tạo một tài sản cho mỗi ô bạn muốn thay đổi trong điều khiển xem bảng của bạn, như vậy:
@property (weak) IBOutlet UITableViewCell *cell1;
@property (weak) IBOutlet UITableViewCell *cell2;
Connect mỗi một đến một ô trong Interface Builder.
Khi bạn chỉ cần thay đổi nội dung của nhãn, bạn có thể sử dụng
self.cell1.textLabel.text = @"New Text";
Nếu bạn cần phải thay thế toàn bộ nhãn, sử dụng
UILabel *newLabel = [[UILabel alloc] init];
self.cell2.textLabel = newLabel;
Bạn có thể lấy tế bào từ xem bảng của bạn bằng cách sử dụng phương thức cellForRowAtIndexPath, bạn sẽ cần xác định một lối thoát để truy xuất tableview của bạn.
__weak IBOutlet UITableView *tableView;
sau đó bạn có thể lấy tế bào như thế:
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:yourRow inSection:yourSection];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[[cell textLabel] setText:@"Your new text"];
Có lẽ sau khi cài đặt văn bản, bạn sẽ cần phải điều chỉnh nhãn của bạn, hoặc chiều cao di động của bạn, nếu bạn muốn có một sự giúp đỡ sâu cung cấp thêm thông tin và tôi sẽ vui lòng giúp bạn.
Và bạn đã hoàn tất, hy vọng điều đó sẽ hữu ích.
Bạn không cần khai báo một Outlet cho bảngView vì bạn đã sử dụng một UITableViewController. –
một UITableView được cấu hình với 'Các ô tĩnh' chỉ có thể tồn tại trong ngữ cảnh của một UITableViewController. –
@RossPenman đã đăng câu trả lời hay.
@ggrana lưu ý một vấn đề tiềm năng để làm với bộ nhớ và tái sử dụng di động, tuy nhiên đừng lo lắng về điều đó ...
Đối với một UITableView
với các tế bào tĩnh tất cả các tế bào được khởi tạo lên phía trước, trước khi viewDidLoad
được gọi trên UITableViewController
và không được sử dụng lại theo cách mà các tế bào động. Vì vậy, bạn thậm chí có thể chỉ cần lấy IBOutlets
trực tiếp tới UITextFields
, UISwitches
, UILabels
và những thứ bạn thực sự quan tâm đến việc bạn đã bỏ vào các ô tĩnh của bạn trong Bảng phân cảnh.
Tôi không biết bạn có thể tạo 'IBOutlets' từ các ô tĩnh. Phải tìm hiểu thêm về tài liệu, tôi đoán vậy. –
Tôi cần điều này.
dispatch_async(dispatch_get_main_queue(), ^{
(...textLabel updates)
[self.tableView reloadData];
});
Bạn có thể làm một cái gì đó như thế này
for (int section = 0; section < [table numberOfSections]; section++) {
for (int row = 0; row < [table numberOfRowsInSection:section]; row++) {
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell* cell = [self cellForRowAtIndexPath:cellPath];
cell.backgroundColor = [UIColor blackColor];
cell.textLabel.textColor = [UIColor whiteColor;
cell.textLabel.text = @"Your text";
}
}
Ngoài ra, hãy chắc chắn để giữ những thay đổi của bạn ra khỏi viewDidAppear và đặt chúng trong viewWillAppear hoặc bạn sẽ chạy vào các vấn đề
Hy vọng nó hoạt động :
@IBOutlet weak var yourTextField: UITextField!
private var yourText: String?
Tôi chỉ tùy chỉnh trong ủy quyền của tableview này:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
guard let yourText = yourText else { return }
yourTextField.text = yourText
}
Khi bạn thay đổi văn bản:
yourText = "New text here"
tableView.reloadData()
Swift 3 giải pháp:
Đầu tiên tạo một IBOutlet của tĩnh TableViewCell
@IBOutlet weak var cellFirst: UITableViewCell!
sau đó trong tên nhãn thay đổi viewDidLoad.
cellFirst.textLabel?.text = "Language"
Lưu ý: Nếu bạn đã đính kèm một nhãn trên TableViewCell sau đó chỉ cần che giấu nó bằng cách sử kịch bản này.
- 1. Sửa đổi văn bản trong ô UITableView tĩnh?
- 2. Nhãn không dây - cách thay đổi vị trí văn bản
- 3. Làm cách nào để thay đổi kích thước của nhãn trên ô UITableViewCellStyleValue2? (UITableView iPhone)
- 4. Nhãn thay đổi nhãn/giá trị trường văn bản
- 5. cách thay đổi màu nhãn văn bản QCheckBox trong Qt?
- 6. Phát hiện thay đổi trong văn bản không có nhãn
- 7. Tạo các ô tùy chỉnh trong hàng tĩnh UITableView
- 8. Sửa đổi văn bản nhãn đánh dấu
- 9. Nhãn trên sự kiện thay đổi văn bản
- 10. Thay đổi văn bản/nhãn ggplot huyền thoại
- 11. UISwitch trong ô UITableView
- 12. Đặt văn bản nhãn trong tab QTabWidget
- 13. Cách thay đổi Văn bản trong TextCompositionEventArgs
- 14. Set dữ liệu cho các tế bào UITableView tĩnh
- 15. Chọn tất cả các ô trong UITableView
- 16. Ẩn các ô trống trong UITableView
- 17. Thay đổi màu đường viền trong các ô UITableView của iPhone (không được nhóm)
- 18. Văn bản UITableViewCellMàu không thay đổi
- 19. FPDF: Thay đổi màu văn bản trong khi ở trong Ô?
- 20. Cho phép người dùng chỉnh sửa văn bản trong ô UITableView
- 21. Thay đổi màu văn bản trong trường văn bản
- 22. Văn bản trùng lặp trong UITableView
- 23. Thay đổi màu văn bản trong MoreNavigationController
- 24. Thay đổi kích thước phông chữ trong các ô Matlab
- 25. thay đổi văn bản bên trong phần tử nhãn sử dụng CSS
- 26. Làm cách nào để thay đổi văn bản của nhãn trong jQuery?
- 27. SWT Java: cách thay đổi màu của văn bản trong Kiểm soát nhãn?
- 28. Tự động thay đổi kích thước văn bản nhãn trong Qt - hành vi lạ
- 29. Thay đổi màu văn bản trong các hộp CHỌN
- 30. Căn chỉnh dọc văn bản trong nhãn
Tuyệt vời !!! Cảm ơn. Tôi không biết rằng textLabel có thuộc tính văn bản. – vZ10
Không, bạn không được giữ lại tất cả các ô của bạn, bởi vì bạn phải tái sử dụng các tế bào của bạn, và không tải tất cả các tế bào vào bộ nhớ, bạn phải có chỉ các tế bào mà bạn đang hiển thị nạp! – ggrana
@ggrana Vì đây là những tế bào tĩnh mà chúng ta đang xử lý, không có khả năng là nhiều trong số chúng, do đó việc sử dụng bộ nhớ sẽ không đáng kể. Tuy nhiên, tôi đồng ý rằng câu trả lời đã chỉnh sửa của bạn tốt hơn câu trả lời của tôi, vì vậy tôi đã upvoted nó. –