#iphone #ios #uitableview #nsfetchedresultscontroller #transient
#iPhone #iOS #uitableview #nsfetchedresultscontroller #переходный
Вопрос:
Я просмотрел несколько сообщений на этом сайте, но не нашел своей точной проблемы, поэтому я ищу несколько советов. В настоящее время у меня есть приложение с объектом TaskList, который я использую для резервного копирования моего текущего TableView. Я хотел бы создать разделы на основе нескольких атрибутов объекта. Например, у меня есть атрибут «isShared» bool
и атрибут «completed» bool
, и я хотел бы отображать разделы для группировки «общих» элементов, «не общих» элементов и «завершенных» элементов.
Является ли это ситуацией, когда свойство transient будет работать? Большинство приложений, которые я видел, применяются только к одному атрибуту, поэтому я не смог обмозговать это.
Заранее спасибо.
Ответ №1:
У меня в голове есть идея, но это может быть не лучшим решением. Можете ли вы создать три массива, содержащих объекты для «isShared», «notShared» и «completed», на основе ваших атрибутов bool?
Затем в ваших методах ячейки tableview
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//Custom your cell for different section here
switch (indexPath.section)
{
//First section is shared item
case 0:
if(cell == nil){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//Custom your cell here, for example, you can assign an item in your list to the cell's textlable
cell.textLabel.text = [sharedArray objectAtIndex:[indexPath row]];
}
break;
case 1:
if(cell == nil){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//Custom your cell for not shared item here
cell.textLabel.text = [notSharedArray objectAtIndex:[indexPath row]];
}
break;
case 2:
if(cell == nil){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//Custom your cell for not shared item here
cell.textLabel.text = [CompletedArray objectAtIndex:[indexPath row]];
}
break;
default:
break;
}
return cell;
}
Таким образом, вы получаете три раздела в табличном представлении, сгруппированные по атрибутам bool. Если вы измените один элемент в своем списке, то есть предоставите общий доступ к одному неразделяемому элементу из неразделяемого раздела, то вам может потребоваться реализовать метод для перемещения этого объекта из unSharedArray в SharedArray, а затем вызвать
[tableView reloadData]
чтобы обновить представление таблицы.
Ответ №2:
Я бы использовал словарь с массивами. Я бы заполнил словарь в init или методе viewDidLoad viewDidLoad в TableViewController.