如果没有显示另一个viewcontroller的tableView数据,你会如何构建这样的应用程序?
如果tableview没有数据但我需要显示另一个视图,网络会显示显示消息的方法。 viewcontroller(PlaceholderVC)有一个图像和标签(404样式的页面等)。
基本上在第一个屏幕(初始)上,用户点击一个按钮即可进入tableView。在navigationBar上,项目允许您创建新的表格单元格(数据)。除非你进入tableView控制器(FeedVC),否则没有其他方法可以创建该项目。我很难让这个工作正常。我实施的内容有很多错误:
//FeedVC
let data = []
viewDidLoad() {
[...]
}
numberOfRowsInSection {
if data.count == 0 {
showPlaceholderVC()
} else {
return data.count
}
}
func showPlaceholderVC() {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let pc: PlaceholderVC = storyboard.instantiateViewController(withIdentifier: "placeholderVC") as! PlaceholderVC
self.showDetailViewController(pc, sender: Any?.self)
}
那会带我去PlaceholderVC
。那个PlaceholderVC
也可以present
VC创建一个新的表格单元格。当我点击保存时,它会解散并返回PlaceholderVC
。我可以将保存功能修改为present
FeedVC
,但我感觉正确,它应该是dismiss()
。如果data > 0
并且我创建了一个新数据,那么保存功能仍会存在。看看发生了什么?保存应该运行一些代码然后解雇。我希望不要在更多图层上添加图层。
如果我可以在tableView上添加隐藏的图像和标签,我可以拥有一个干净的代码。那可能吗?当我在tableView上拖动图像视图时,它会收缩。
我可以把这一切都搞定但是它太多了" ifs"是所有风险投资都有很多"礼物"。
答案 0 :(得分:0)
根据您的问题,您需要按照以下步骤操作:
答案 1 :(得分:0)
您是否希望始终使用单独的视图控制器来显示占位符文本?
如果没有,您可以将tableView作为主视图的subView,将placeholderView再次作为主视图的子视图。
您可以根据数据隐藏和显示tableView。
如果您允许在代码中使用第三方库,可以参考DZNEmptyDataSet
答案 2 :(得分:0)
根据我的隐藏视图(无论你想在没有数据的情况下显示什么)是更好的方法。它可以是:
@IBOutlet weak var mEmptyView: UIView!
@IBOutlet weak var mTableView: UITableView!
var tableViewDataArray: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
tableViewDataArray = //get array from your resource//
if tableViewDataArray.count > 0 {
mEmptyView.hidden = false
mTableView.hidden = true
}else{
mEmptyView.hidden = true
mTableView.hidden = false
}
}