我的应用包含UITableView
,其中包含部分页脚。当用户滚动到tableView的底部时,有时在最后一个单元格和tableFooter之间会出现分隔符插入。这种行为不一致。
有没有办法强制此分隔符始终显示或永不显示?你们有没有注意到这种不一致的行为?对我来说似乎是一个错误。
EDIT
我正在使用
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UILabel *footer = [[UILabel alloc] init];
footer.backgroundColor = [UIColor whiteColor];
footer.font = [footer.font fontWithSize:15];
footer.textAlignment = NSTextAlignmentCenter;
return footer;
}
但您只能使用
轻松重现相同的问题- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
答案 0 :(得分:0)
要执行此操作,您必须覆盖用作页脚的标准UIView
。
您可以通过覆盖委托方法-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
来完成此操作。
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *myFooterView;
// create a view with a label and without a line at the top etc...
return myFooterView;
}
答案 1 :(得分:0)
我不确定为什么你会得到不一致的结果。也许尝试在页脚视图中添加背景。这是我的代码:
-(UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 33)];
[footerView setBackgroundColor:[UIColor grayColor]];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, footerView.bounds.size.width, 20)];
label.text = @"Footer";
[label setTextAlignment:NSTextAlignmentCenter];
[footerView addSubview:label];
return footerView;
}
结果如下:
答案 2 :(得分:0)
这是一种懒惰的做法,但它仍然有效。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifyer"];
if (indexPath.row == tableArray.count) {
cell.separatorStyle = UITableViewCellSeparatorStyleNone;
}
return cell;
}
答案 3 :(得分:0)
这是解决方案,非常简单!
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifyer"];
cell.separatorInset = (indexPath.row == totalNumber-1) ? UIEdgeInsetsMake(0, INT16_MAX, 0, 0) : UIEdgeInsetsZero;
return cell;
}
答案 4 :(得分:0)
我找到了一些解决方法:
每当你期望这个额外的分隔符出现时(例如,当用户像你描述的那样滚动到底部时) - 添加以下代码行:
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
逻辑是这样的:第一个代码串移除底部分隔符,第二个代码不添加它。在某些情况下它对我有用,但它不是100%修复。
我想,它也可能是一个Apple bug,因为有时候底部分隔符会在他们的“Reminders”应用中消失。