Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Objective-C: поиск по изображениям в таблице

Я хочу выполнить поиск изображений с помощью search bar в tableview. Мой поиск работает, но для показа изображения я использую этот код в
- (void)viewDidLoad { [super viewDidLoad];
_array18 = [[NSArray alloc ]initWithObjects:@"title1",@"title2",@"title3", nil]; _image = [[NSArray alloc ]initWithObjects:[UIImage imageNamed:@"title1.jpg"],[UIImage imageNamed:@"title2.jpg"],[UIImage imageNamed:@"title3.jpg"], nil];
}
- (void)searchForText:(NSString*)searchText scope:(NSString*)scope {
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", searchText];
_searchResults = [_array18 filteredArrayUsingPredicate:resultPredicate]; }
Но код в cellForRowAtIndexPath не является простым решением, если у меня есть 100 изображений или больше мне нужно создавать 100 проверок. Как можно упростить этот код или есть ли более простое решение?
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"Cell";
cell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) { cell= [[cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; }
if ([[_searchResults objectAtIndex:indexPath.row]isEqualToString:@"title1"]) { cell.imageView.image = [_image objectAtIndex:0]; } if ([[_searchResults objectAtIndex:indexPath.row]isEqualToString:@"title2"]) { cell.imageView.image = [_image objectAtIndex:1]; } if ([[_searchResults objectAtIndex:indexPath.row]isEqualToString:@"title3"]) { cell.imageView.image = [_image objectAtIndex:2]; } }


Ответ

Используйте словарь:
@property (strong,nonatomic)NSMutableDictionary *dic;
- (void)viewDidLoad { [super viewDidLoad]; _array18 = [[NSArray alloc]initWithObjects:@"title1",@"title2",@"title3", nil]; [self initDic]; }
- (void)initDic { self.dic = [[NSMutableDictionary alloc] initWithDictionary:@{ @"title1":[UIImage imageNamed:@"title1.jpg"], @"title2":[UIImage imageNamed:@"title2.jpg"], @"title3":[UIImage imageNamed:@"title3.jpg"] }]; }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"Cell"; cell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } cell.imageView.image = [dic objectForKey:[_searchResults objectAtIndex:indexPath.row]];
return cell; }

Комментариев нет:

Отправить комментарий