У меня есть идея в голове, но это может быть не лучшим решением. Можете ли вы создать три массива, содержащих объекты для «isShared», «notShared» и «complete» на основе ваших атрибутов bool?
Тогда в вашей табличной ячейке методы
-(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]
чтобы обновить таблицу.