单个ViewController中使用多个UITableview和自定义TableViewCell

时间:2016-02-24 05:33:34

标签: ios swift uitableview

如果我在单个ViewController中使用多个UITableView,我如何在cellForRowAtIndexPath委托方法中返回TableViewcell,One TableView具有Custom UITableViewCell,另一个具有默认的UITableViewCell。我的问题是我无法将UITableViewCell转换为Custom TableViewCell类型。

代码使用如下,

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell:UITableViewCell?
        if tableView == self.tvCity {
            var cell:UITableViewCell?
            cell = tableView.dequeueReusableCellWithIdentifier(cityCellIdentifier, forIndexPath: indexPath) as UITableViewCell

            let row = indexPath.row
            cell!.textLabel?.text = self.cityList[row].cityEn
                   }
        if tableView == self.tvBranchByCity {
            var cell:BranchNearMeTableViewCell?
            cell = (tableView.dequeueReusableCellWithIdentifier(branchCellIdentifier, forIndexPath: indexPath) as! BranchNearMeTableViewCell)

            let row = indexPath.row
           cell.branchName = self.branchList[row].name// here cell.branchName is not accessible.

        }

        return cell!
    }

请指教。提前谢谢。

2 个答案:

答案 0 :(得分:1)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


        if tableView == self.tvCity {
            var cell:UITableViewCell?
            cell = tableView.dequeueReusableCellWithIdentifier(cityCellIdentifier, forIndexPath: indexPath) as UITableViewCell

            let row = indexPath.row
            cell!.textLabel?.text = self.cityList[row].cityEn
            return cell!
                   }
        if tableView == self.tvBranchByCity {
            var cell:BranchNearMeTableViewCell?
            cell = (tableView.dequeueReusableCellWithIdentifier(branchCellIdentifier, forIndexPath: indexPath) as! BranchNearMeTableViewCell)

            let row = indexPath.row
           cell.branchName = self.branchList[row].name as! String // here cell.branchName is not accessible.
           return cell!
        }


    }

答案 1 :(得分:1)

使用标记

区分表

参见示例:

if tableView.tag == 2000

 {

identifier = "First Table"

 let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)

 return cell

 }

else

  {

 identifier = "Second Table"

let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)

 return cell

 }