#objective-c #ios #uitableview
#objective-c #iOS #uitableview
Вопрос:
Я работаю над установкой флажка в каждой строке табличного представления. Когда я нажимаю на строку, ее значение должно сохраняться в массиве, при нажатии на другую строку ее значение также должно сохраняться в том же массиве, а при нажатии на ту же строку значение должно удаляться из массива.
Пожалуйста, подскажите мне, как это реализовать. Я использовал следующий код в didSelectRowAtIndexPath
методе, но мне не удалось это сделать.
if([arrData count]==0)
{
strlast = [arrName objectAtIndex:indexPath.row];
[arrData addObject:strlast];
NSLog(@"string checked in arrData %@",strlast);
}
else
{
for(int i = 0 ;i < [arrData count]; i )
{
NSLog(@"[arrData count]:%d",[arrData count]);
strSelected = [arrName objectAtIndex:indexPath.row];
NSLog(@"strSelected:%@",strSelected);
for(int i = 0 ;i < [arrData count]; i )
{
if([strSelected caseInsensitiveCompare:[arrData objectAtIndex:i]])
{
[arrData addObject:strSelected];
NSLog(@"arrData:%@",arrData);
}
}
}
}
Ответ №1:
list — это имя массива, которое содержит все данные, просматриваемые в tableview, замените его вашим собственным именем массива Предположим, что tableArray — это ваш массив, в который вставляются и удаляются значения. в файле .h
NSMutableArray *tableArray;
в файле .m в представлении didload
tableArray=[[NSMutableArray alloc]init];
tableview не выбрал метод строки:-
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([tableArray count]>0) {
if ([tableArray containsObject:[list objectAtIndex:indexPath.row]]) {
[tableArray removeObject:[list objectAtIndex:indexPath.row]];
NSLog(@"data removed");
NSLog(@"tableArray%@",tableArray);
}
else {
[tableArray addObject:[list objectAtIndex:indexPath.row]];
NSLog(@"data added");
NSLog(@"tableArray%@",tableArray);
}
}
else {
//[tableArray addObject:[NSString stringWithFormat:@"%d",indexPath.row]];
[tableArray addObject:[list objectAtIndex:indexPath.row]];
NSLog(@"data added");
NSLog(@"tableArray%@",tableArray);
}
}
освободите массив в dealloc
Я протестировал код, надеюсь, он может вам помочь….
Комментарии:
1. @Jenifer: логика правильная, но она возвращает номер строки, а не элемент в строке. т. Е. у меня есть четыре имени в четырех строках, я хочу выполнить операцию над ними
2. итак, если вы получаете строку no, вы можете найти элемент для этой строки no, это очень просто
3. хорошо, я понимаю, что смотрите отредактированный ответ, в нем будут указаны элементы в строках, а не номер строки.