làm cách nào để thay đổi nhãn "Không có kết quả", khi sử dụng searchDisplayController?searchDisplayController: thay đổi nhãn "No Results"
Trân
làm cách nào để thay đổi nhãn "Không có kết quả", khi sử dụng searchDisplayController?searchDisplayController: thay đổi nhãn "No Results"
Trân
Nó không phải trực tiếp tiếp cận, vì vậy bạn sẽ phải làm điều đó theo cách cũ thời và tự sift thông qua các subviews của searchDisplayController.searchResultsTableView
của bạn. Dưới đây là một ví dụ:
UITableView *tableView = self.searchDisplayController.searchResultsTableView;
for(UIView *subview in tableView.subviews) {
if([subview class] == [UILabel class]) {
UILabel *lbl = (UILabel*)subview; // sv changed to subview.
lbl.text = @"My custom string";
}
}
tôi sẽ không đề nghị này vì bạn đang dựa vào hành vi nội bộ của searchResultsTableView
mà là nhiều hơn khả năng sẽ thay đổi tại một số điểm, phá vỡ ứng dụng của bạn. Việc mở một yêu cầu về lỗi/tính năng với Apple sẽ là một cách hay để đến đây.
Tôi đã xóa nhãn thành công bằng cách không bao giờ có tập hợp kết quả trống.
Nếu không có kết quả vì chúng đang được tìm nạp từ máy chủ, hãy đặt lại nguồn dữ liệu của bạn thành một hàng duy nhất và để nó hiển thị ô xem bảng trống.
Bên cạnh đó, sử dụng logic để refeuse để chọn "giả" tế bào:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row];
if ([listItem isEqualToString:@""]) {
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
}
Tôi cũng đã tìm thấy nó cần thiết để thêm "giả" logic cell vào phương pháp willSelect
đại biểu:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row];
if ([listItem isEqualToString:@""]) {
return nil;
}
return indexPath;
}
Thật tuyệt, cảm ơn bạn rất nhiều ... – Stefan
Nhưng khi nào bạn thực hiện tinh chỉnh? Chữ "UILabel" này xuất hiện trong phần 'subviews' chỉ sau khi nó được hiển thị ... –
Vâng, chúng ta đặt mã này ở đâu ??? – Napolux