如何在iOS中的单个视图控制器中使用多个UITableView - Swift

时间:2017-04-18 08:00:52

标签: ios swift xcode uitableview

我是iOS开发的新手。目前,我正在开发一个项目,我在一个视图控制器中使用两个以上的UITableView,但这两个数据源都是逐个来自服务器的。当第一个api命中时,它显示结果,但是在从该列表中选择项目后,我无法在列表中显示响应。

这是我的代码:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    print("sdfsdfsf")
    var count:Int?
    if tableView == self.pat_search_listview {
        count = serach_data.count
    }
    else  if tableView == self.visit_listview {
        count = all_vist_data.count
    }
    return count!
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    if tableView == self.pat_search_listview {
        cell.textLabel?.text = serach_data[indexPath.row].name + "     " + serach_data[indexPath.row].id
    }


    else  if tableView == self.visit_listview {
        print("second listview")
        cell.textLabel?.text = all_vist_data[indexPath.row].date
    }

    return cell
}

提前致谢

2 个答案:

答案 0 :(得分:0)

检查两个tableViews的Outlet连接...在viewDidLoad中都不应该为nil

在viewDidLoad中:

self.pat_search_listview.dataSource = self; 
self.visit_listview = self;

self.pat_search_listview.tag = 0
self.visit_listview.tag = 1

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

if tableView.tag == 0
...
else
...

答案 1 :(得分:-1)

确保设置委托和数据源,并且在添加/更新阵列后不要忘记重新加载表。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    if tableView == self.pat_search_listview
    {
        return serach_data.count/*pat_search_listview's Array count*/
    }
    else  if tableView == self.visit_listview
    {
        return all_vist_data.count/*visit_listview Array count*/
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()

    if tableView == self.pat_search_listview
    {
        cell.textLabel?.text = serach_data[indexPath.row].name + "     " + serach_data[indexPath.row].id
    }
    else  if tableView == self.visit_listview
    {
        print("second listview")
        cell.textLabel?.text = all_vist_data[indexPath.row].date
    }

    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    if tableView == self.pat_search_listview
    {
        //--- Item at index from pat_search_listview
    }
    else  if tableView == self.visit_listview
    {
        print("second listview")
        //--- Item at index from visit_listview
    }
}