如果tableView数据为空,如何显示另一个viewcontroller

时间:2017-01-11 06:47:51

标签: ios swift xcode uiviewcontroller swift3

如果没有显示另一个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"是所有风险投资都有很多"礼物"。

3 个答案:

答案 0 :(得分:0)

根据您的问题,您需要按照以下步骤操作:

  1. 如果您正在调用webservice,那么首先调用webservice获取响应检查数组大小。如果数组大小> 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
   }


}