Rou*_*oon 690 cocoa-touch uitableview ios
当我设置一个包含4行的表视图时,在填充的行下面还有额外的分隔符行(或额外的空白单元格).
我该如何移除这些细胞?
J. *_*sta 1472
只需将UIView拖到表中即可.在故事板中,它将位于自定义单元格下方的顶部.您可能更喜欢将其命名为"页脚".
为清晰起见,此处以绿色显示,您可能需要清晰的颜色.
请注意,通过调整高度,您可以根据需要影响表格的"底部反弹"处理方式.(高度零通常很好).
要以编程方式执行此操作:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
Run Code Online (Sandbox Code Playgroud)
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
Run Code Online (Sandbox Code Playgroud)
或者如果你愿意,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Run Code Online (Sandbox Code Playgroud)
添加到表视图控制器...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
Run Code Online (Sandbox Code Playgroud)
如有必要......
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
wkw*_*wkw 128
这是另一种方法,可以用分组表格样式,而你可能不会猜到.向表中添加页眉和页脚(可能是一个或其他,没有检查)会导致分隔符从填充/空白行中消失.
我偶然发现了这个因为我想在桌子的顶部和底部留一点空间来降低按钮的风险,而不是用手指粗糙的桌子.这是一种将空白视图作为页眉和页脚粘贴的方法.使用您喜欢的任何高度,您仍然可以消除额外的分隔线.
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
Run Code Online (Sandbox Code Playgroud)
为了回应@Casebash,我回到我的应用程序中的代码(iTunes商店中的"AcmeLists"列表管理器......)并将addHeaderAndFooter方法短路以进行验证.没有它,我有额外的行分隔符; 使用代码,我在你的窗口中看到了snap:没有表格行分隔符图片.所以我不确定为什么它不适合你.此外,对我来说,在表视图上设置任何自定义页脚必然会停止为其下方的空行绘制行分隔符.那将是可怕的.作为参考,我查看了可以在屏幕上查看的行数更多的表格,然后查看了包含两行的表格.在这两种情况下,都没有外来的分离器.
也许您的自定义视图实际上并未添加.要检查这一点,请将背景颜色设置为clearColor例如以外的颜色[UIColor redColor].如果您在桌子底部没有看到一些红条,则表示您的页脚未设置.
din*_*uru 68
在Swift中的UITableView中删除空行的额外分隔线
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
Run Code Online (Sandbox Code Playgroud)
Gun*_*nds 34
我想延长wkw的回答:
只需添加高度为0的页脚就可以了.(在sdk 4.2,4.4.1上测试)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
Run Code Online (Sandbox Code Playgroud)
甚至更简单 - 在您设置tableview的地方,添加以下行:
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
Run Code Online (Sandbox Code Playgroud)
甚至更简单 - 只需删除任何分隔符:
[_tableView setTableFooterView:[UIView new]];
Run Code Online (Sandbox Code Playgroud)
再次感谢wkw :)
Amb*_*non 18
试试这个.它对我有用:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
Run Code Online (Sandbox Code Playgroud)
Seb*_*ian 13
override func viewDidLoad() {
super.viewDidLoad()
tableView.tableFooterView = UIView()
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Swift,请将以下代码添加到管理tableview的控制器的viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView(frame: CGRectZero)
}
Run Code Online (Sandbox Code Playgroud)
对于Swift 4.0,不推荐使用CGRectZero,因此您必须使用它 CGRect.zero
你可以在最后添加一个空页脚然后它会隐藏空单元格,但它看起来也很难看:
tableView.tableFooterView = UIView()
Run Code Online (Sandbox Code Playgroud)
有一种更好的方法:在表格视图的末尾添加1点线作为页脚,空单元格也将不再显示.
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
Run Code Online (Sandbox Code Playgroud)
推进J. Costa的解决方案:您可以通过以下代码行对表进行全局更改:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
Run Code Online (Sandbox Code Playgroud)
在第一个可能的方法内(通常在AppDelegate,in:application:didFinishLaunchingWithOptions:方法).
我知道这个问题已被接受答案但我在这里提出了不同的方法来隐藏额外的分隔线UITableView.
您可以隐藏tableView标准分隔线,并在每个单元格的顶部添加自定义行.
更新:
添加自定义分隔符的最简单方法是添加UIView1px高度的简单:
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[cell.contentView addSubview:separatorLineView];
Run Code Online (Sandbox Code Playgroud)
要么
self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
self.tblView.delegate=self;
self.tblView.dataSource=self;
[self.view addSubview:self.tblView];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tblView setTableHeaderView:v];
[self.tblView setTableFooterView:v];
[v release];
Run Code Online (Sandbox Code Playgroud)
要么
- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
// To "clear" the footer view
return [[UIView new] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
要么 我喜欢的最好和最简单的方式是
self.tableView.tableFooterView = [[UIView alloc] init];
Run Code Online (Sandbox Code Playgroud)
尝试任何一个;
对于这个问题,您可能会找到很多答案。他们中的大多数都围绕 UITableView'stableFooterView属性进行操作,这是隐藏空行的正确方法。为方便起见,我创建了简单的扩展,它允许从 Interface Builder 打开/关闭空行。您可以从这个gist文件中查看它。我希望它可以为您节省一点时间。
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
tableView.isEmptyRowsHidden = true
Run Code Online (Sandbox Code Playgroud)
Par*_*la 5
uitableview额外的分隔线隐藏额外的分隔符行隐藏在swift 3.0中
self.tbltableView.tableFooterView = UIView(frame: .zero)
Run Code Online (Sandbox Code Playgroud)
如果在最后一个单元格之后不希望使用任何分隔符,则页脚的高度需要接近于零,但高度不能为零。
在您的UITableViewDelegate:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179691 次 |
| 最近记录: |