iOS设置UITableView最初扩展

时间:2014-08-06 06:52:45

标签: ios objective-c uitableview

我有一个UITableView,它有可扩展的自定义单元格。可以扩展多个细胞。为此,我有一个数组expandedArray,其中我存储了展开的所有单元格的indexPath。最初所有单元格都已折叠。我想在初始启动时扩展所有单元格。这是我的cellForRowAtIndexPath代码: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//  VISITORS LISTS TV
NSUInteger count = 0;

VisitorsListsCell *vcell = (VisitorsListsCell *) [tableView dequeueReusableCellWithIdentifier:@"VisitorsListsCell"];

if (vcell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"VisitorsListsCell" owner:self options:nil];
    vcell = [nib objectAtIndex:0];
}
// Button - Round Corners
[vcell button].layer.cornerRadius = 5;
[vcell button].contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

NSString *text = [visistorsList objectAtIndex:indexPath.row];
// SET PROPERTIES OF CELL
// ....

if ([expandedArray containsObject:indexPath]) {
    // Do expanded cell stuff
    [vcell setButtonText:[visistorsList objectAtIndex:indexPath.row] withCount:(int)count isExpanded:YES];
    [vcell.button setImage:[UIImage imageNamed:@"arrowup.png"] forState:UIControlStateNormal ];
} else {
    [vcell setButtonText:[visistorsList objectAtIndex:indexPath.row] withCount:(int)count isExpanded:NO];
    [vcell.button setImage:[UIImage imageNamed:@"arrowdown.png"] forState:UIControlStateNormal ];
}

[[vcell listsTableView] reloadData];

return vcell;
}

我想要的是当页面加载时,所有单元格都会被展开。我相信我需要将每个单元格的indexPath添加到expandedArray。但是在初始运行时,如何添加indexPath?我找不到实现它的方法。

是否有可能,任何线索。或任何其他方式来实现目标。任何帮助都非常感谢。感谢。

1 个答案:

答案 0 :(得分:1)

要将indexPath添加到展开的数组,您应该使用下面的代码。但更简单的方法是使用-numberOfSectionsnumberOfRowsInSection:中使用的相同方法。使用tableView委托不是一个好方法。

- (void)viewDidLoad {
    self.expandedArray = [NSMutableArray new];
    for (int itSection=0; itSection<[self.tableView numberOfSections]; itSection++) {
        for (int itRow=0; itRow<[self.tableView numberOfRowsInSection:itSection]; itRow++) {
            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:itRow inSection:itSection];
            [self.expandedArray addObject:indexPath];
        }
    }
}

顺便说一下:从xib实现单元格的正确方法:

- (void)viewDidLoad {
    ....
    UINib *nib = [UINib nibWithNibName:NSStringFromClass([VisitorsListsCell class]) bundle:nil];
    [self.tableView registerNib:nib forCellReuseIdentifier:@"VisitorsListsCell"];
}