获取与UITableView节中的行关联的对象的属性
因此,我有一个数据源,一个由自定义对象组成的NSArray 我在UITableView中显示源。根据对象的属性,tableview被划分为多个部分 不知何故,当用户选择一行时,我不知道如何获得正确的对象 我需要找到所选对象,修改其属性,然后才能重建UITableView获取与UITableView节中的行关联的对象的属性,uitableview,select,row,datasource,sections,Uitableview,Select,Row,Datasource,Sections,因此,我有一个数据源,一个由自定义对象组成的NSArray 我在UITableView中显示源。根据对象的属性,tableview被划分为多个部分 不知何故,当用户选择一行时,我不知道如何获得正确的对象 我需要找到所选对象,修改其属性,然后才能重建UITableView 我相信这很简单。请帮帮我 可以只使用委托函数didselectRowatineXpath,然后从它的参数indepath获取自定义对象,如dataSource[indepath.row]。现在很难说您没有提到如何存储这些对象。猜
我相信这很简单。请帮帮我 可以只使用委托函数
didselectRowatineXpath
,然后从它的参数indepath
获取自定义对象,如dataSource[indepath.row]
。现在很难说您没有提到如何存储这些对象。猜测您的数据源是这样的:
self.dogs = [[NSArray alloc] initWithObjects:@"Affenpinscher",@"Afghan Hound",@"Alaskan Malamute", nil];
可以使用UITableView的一个委托方法的indexPath.row参数从NSArray访问特定值:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *dogDreed = [self.dogs objectAtIndex:indexPath.row];
NSLog(@"Dreed of dog selected: %@", dogDreed);
}
好的,我最后做了以下(简化): 然后,为了检索它,我做:
// (called from a UITableView delegate)
-(void)identifyObject:(id)indexPath{
UITableViewCell *selectedCell = [myTableView cellForRowAtIndexPath:indexPath];
int hash = selectedCell.tag;
NSPredicate *cellHashFilter = [NSPredicate predicateWithFormat:@"hash == %i", hash];
myObject *theEvent = [arrayOfObjects filteredArrayUsingPredicate:cellHashFilter][0];
//doing some stuff here
[self refreshTable];
}
它只返回节和节中的行。我不明白如何使用这些信息从数据源获取关联对象,这取决于如何将它们存储在数据源中。另一种方法是,在绘制某些单元格时,只需使用数据源类型向自定义单元格类添加一个字段并将其分配给它,然后您就可以从单元格本身获取该对象。您还可以从数据源生成dict并像[SectionRow,object]一样保存它然后你可以从我提到的didSelect方法中得到它。任何人需要知道的帮助都将包含在三个数据源方法中:numberOfSections、numberOfRowsInSection、cellForRowAtIndexPath。把这些贴进去,你会在几秒钟内得到帮助。
// (called from a UITableView delegate)
-(void)identifyObject:(id)indexPath{
UITableViewCell *selectedCell = [myTableView cellForRowAtIndexPath:indexPath];
int hash = selectedCell.tag;
NSPredicate *cellHashFilter = [NSPredicate predicateWithFormat:@"hash == %i", hash];
myObject *theEvent = [arrayOfObjects filteredArrayUsingPredicate:cellHashFilter][0];
//doing some stuff here
[self refreshTable];
}