#objective-c #uitableview
#objective-c #uitableview
Вопрос:
всем привет, я знаю, что это частый вопрос, но, пожалуйста, помогите мне. у меня есть tableview, в котором я отображаю данные из NSArray. я хочу выбрать несколько строк с помощью UITableViewCellAccessoryCheckmark. но при прокрутке галочки исчезают. все говорят о ячейке многократного использования. Я понимаю эту концепцию, но не могу решить свою проблему. Поэтому, пожалуйста, кто-нибудь может дать мне реализацию методов cellForRowAtIndexPath и didSelectRowAtIndexPath спасибо. Это срочно.Я использую этот код
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
}
cell.textLabel.text = [listData objectAtIndex:indexPath.row];
[cell setAccessoryType:UITableViewCellAccessoryNone];
for (int i = 0; i < selectedIndexes.count; i ) {
NSUInteger num = [[selectedIndexes objectAtIndex:i] intValue];
if (num == indexPath.row) {
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
// Once we find a match there is no point continuing the loop
break;
}
}
Ответ №1:
Если я правильно понимаю вашу проблему, у вас есть массив и вы добавляете индексы в массив всякий раз, когда выбираются строки. Это не сработает. Я предлагаю вам иметь словарь для сопоставления выбранных строк,
NSMutableDictionary *selectedIndexDict;
В вашем didSelectRowAtIndexPath:
методе,
[selectedIndexDict setValue:[NSNumber numberWithBool:YES] forKey:[NSString stringWithFormat:@"%d", indexPath.row]];
И в вашем cellForRowAtIndexPath:
методе,
[cell setAccessoryType:UITableViewCellAccessoryNone];
if ([[selectedIndexDict valueForKey:[NSString stringWithFormat:@"%d", indexPath.row]] boolValue]) {
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
Комментарии:
1. спасибо вам, это было действительно полезно и быстро для написания кода 🙂 еще раз спасибо