基本上我有一些对象类,其主要功能是充当tableView Delegate。
我想将其添加到某个超类中。当然只有一个超类,我需要灵活性。如果后者我想随意将此功能添加到其他类中呢?
基本上这些是用于处理用户可以删除或重新排列行等的表的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSAssert(false, @"Should be called at child View");
return nil;
}
-(Class) classBookmarked
{
assert(false);
return nil;
}
-(void) setEditing:(BOOL)editing animated:(BOOL)animated
{
[self.delegate.tvDelegated setEditing:editing animated:animated];
if (!editing)
{
NSArray * newIds = _arManagedObjectArray.convertArrayOfNSManagedObjectToItsDefaultSelector;
[self varManagedObjectArrayUpdated];
[BGBookmarkStorer vReportBookmarkStatusToServer:newIds Flag:@"update" withClass:self.classBookmarked];
}
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = indexPath.row;
[self deleteARow:row];
}
-(void)deleteARow:(NSUInteger) row
{
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[_arManagedObjectArray removeObjectAtIndex:row];
[self.delegate.tvDelegated deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self varManagedObjectArrayUpdated];
}
-(void) varManagedObjectArrayUpdated
{
[self.bookmarkStorer vUpdateBookMarkIDwithArray:_arManagedObjectArray];
[self.delegate vUpdateNumberOfStuffs];
}
-(BGBookmarkStorerForPlacesandCatalog *) bookmarkStorer
{
assert(false);
return nil;
}
- (NSArray*) theBookmarkedIDs
{
return self.bookmarkStorer.bookmarkedIDs;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
NSMutableArray * mutableBusinessBookmarked= _arManagedObjectArray;
NSManagedObject *bizOrCatToMove = mutableBusinessBookmarked[sourceIndexPath.row];
[mutableBusinessBookmarked removeObjectAtIndex:sourceIndexPath.row];
[mutableBusinessBookmarked insertObject:bizOrCatToMove atIndex:destinationIndexPath.row];
//_arManagedObjectArray=mutableBusinessBookmarked;
[self varManagedObjectArrayUpdated];
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
答案 0 :(得分:2)
创建uitableviewcontroller的子类。在那里实现所有功能。将它用作所有视图控制器的超类。
答案 1 :(得分:1)
如果我理解正确,你需要一个实用的地方,你可以把它放在你的表视图控制器中,对吧? 如果是这样,只需在UITableViewController上创建一个类别并将代码放在那里; - )