#ios #objective-c #uitableview
#iOS #objective-c #uitableview
Вопрос:
Друг, я пытался установить флажок по умолчанию в своей ячейке UITableView, вот мой код, пожалуйста, посмотрите на это, у меня серьезные проблемы с получением желаемого результата
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdent = @"cell1111";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent];
if (tableView==_ShapeSelectionTable)
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [_ShapeSelectionTable dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if([_selectedShapeArray containsObject:[_shapeArray objectAtIndex:indexPath.row]] || [_selectedShapeArray containsObject:@"Check All"]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
for (NSString *s in _shaperesultArray)
{
for (int i=0; i<self.shapeArray.count; i )
{
NSIndexPath *myIdx=[NSIndexPath indexPathForRow:i inSection:0];
ShapeInfo *shap=[self.shapeArray objectAtIndex:i];
if ([shap.shape isEqualToString:s])
{
cell = [[self ShapeSelectionTable] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
cell.accessoryType=UITableViewCellAccessoryCheckmark;
//[tableView selectRowAtIndexPath:myIdx animated:TRUE scrollPosition:UITableViewScrollPositionNone];
}
else
{
cell.accessoryType=UITableViewCellAccessoryNone;
}
}
}
ShapeInfo *shap=[_shapeArray objectAtIndex:indexPath.row];
cell.textLabel.text=shap.shape;
return cell;
}
Я хочу получить следующий вывод из моего ResultInfo: ячейка должна запоминать тип аксессуара
Друзья, у меня возникли проблемы с предварительной отметкой (принадлежность ячейки) из моих объектов JSON Обратите внимание, что я получаю этот вывод из Интернета в формате JSON. Любая помощь будет оценена..Спасибо
ОБНОВЛЕНИЕ, когда я запускаю этот код, получаю исключение, подобное ошибке утверждения в -[UITableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2935.137/UITableView.m:6509 2014-06-24 14:14:24.306 TheGemHubApp[2405:60b] * Завершение работы приложения из-за неперехваченного исключения ‘ Исключение NSInternalInconsistencyException’, причина:’Источник данных UITableView должен возвращать ячейку из TableView:cellForRowAtIndexPath:’**
Ответ №1:
2935.137 / UITableView.m: 6509 2014-06-24 14:14:24.306 TheGemHubApp[2405:60b] Завершение работы приложения из-за неперехваченного исключения ‘NSInternalInconsistencyException’, причина: ‘Источник данных UITableView должен возвращать ячейку из TableView:cellForRowAtIndexPath:’*
Я приглашаю, чтобы это исключение произошло в этой строке кода
cell = [[self ShapeSelectionTable] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
Вы должны поставить здесь некоторую точку останова и смоделировать, что происходит.
Комментарии:
1. Спасибо, что указали мне на мою ошибку … но что было бы предложением, какую логику я должен использовать, чтобы получить желаемый результат? Есть идеи?
2. Вы не должны использовать эту функцию: cell = [[self ShapeSelectionTable] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; вы должны настроить только делегат UITableView: cellForRowAtIndexPath . И когда вы хотите обновить tableview: вы можете просто вызвать: [yourtable reloadData] или с помощью команды обновления строки
Ответ №2:
Вы не должны вызывать -selectRowAtIndexPath:animated:
-cellForRowAtIndexPath:
, вам не нужно выбирать строку, чтобы показать флажок.
Комментарии:
1. Привет @CarmeloS тогда как я могу добиться желаемого результата?
2. @NikunjKatharotiya вы просто устанавливаете cell.accessoryType , и в вашей ячейке появится флажок.
3. Я хочу, чтобы моя ячейка проверялась моим массивом данных JSON, который находится в _shapeResultArray
4. Ячейка не «запоминает» свое состояние, вместо этого вы должны настраивать ячейку при каждом отображении ячейки. Я не вижу ничего плохого в вашем измененном коде, могу я спросить, что вы подразумеваете под «проверкой ячейки»?
5. Пока я пытаюсь отобразить свою запись в UITextField, при нажатии на кнопку отобразится ячейка с галочкой в соответствии с моим кодом. Надеюсь, вы поняли мой вопрос