Sam*_*nen 4 uitableview uikit ios
我想向用户显示一个文本,以通知数据源中没有内容.例如,如果你没有联系人,你可以在联系人应用程序中看到这种行为,它在表格中间用灰色文本表示.有没有简单的方法来做到这一点,或者我必须使用一些技巧,如创建空单元格或东西..谢谢!
没有(AFAIK)任何内置方式让表视图在空时显示消息.tableView:numberOfRowsInSection:如果数据源为空,则可以返回1并tableView:cellForRowAtIndexPath:返回"虚拟"单元格,表示没有数据.或者您可以添加自己的视图来显示相应的消息,完全忽略(空)表视图.
这是一个简短而又甜蜜的解决方案.
第一步,在UITableViewController初始化中,添加:
UILabel *placeholder = [[UILabel alloc] init];
placeholder.font = [placeholder.font fontWithSize:20];
placeholder.numberOfLines = 0; // Use as many lines as needed.
placeholder.text = NSLocalizedString(@"Your text here", nil);
placeholder.textAlignment = NSTextAlignmentCenter;
placeholder.textColor = [UIColor lightGrayColor];
placeholder.hidden = YES; // Initially hidden.
[self.tableView addSubview:placeholder];
self.placeholder = placeholder; // You'll need a reference to the placeholder.
Run Code Online (Sandbox Code Playgroud)
第二步,在你的UITableViewController中,添加:
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
self.placeholder.frame = self.tableView.bounds;
}
Run Code Online (Sandbox Code Playgroud)
最后一步,在需要时显示/隐藏占位符.
更好的解决方案是不使用UITableViewController.只需将一个tableView添加到UIViewController,并将占位符视图添加到tableView上方的UIViewController.使用"自动布局"使占位符垂直和水平居中.最后,在需要时显示/隐藏占位符.
你们对这个解决方案有什么看法?请评论.
在 Swift 2.0 中
就在日历下方,我有一个表格视图
func TabelaSemDados(Array:NSArray){
if Array.count == 0 {
tableView.tableFooterView = UIView(frame: CGRect.zero)
tableView.backgroundColor = UIColor.clearColor()
var label = UILabel()
label.frame.size.height = 42
label.frame.size.width = tableView.frame.size.width
label.center = tableView.center
label.center.y = (tableView.frame.size.height/2)
label.numberOfLines = 2
label.textColor = UIColor.grayColor()
label.text = "No Data Text"
label.textAlignment = .Center
label.tag = 1
self.tableView.addSubview(label)
}else{
self.tableView.viewWithTag(1)?.removeFromSuperview()
}
}
Run Code Online (Sandbox Code Playgroud)
称为viewdidapper:
override func viewDidAppear(animated: Bool) {
TabelaSemDados(self.Agenda)
}
Run Code Online (Sandbox Code Playgroud)