自定义 TableView + 段控制器代码中的格式和错误

Posted

技术标签:

【中文标题】自定义 TableView + 段控制器代码中的格式和错误【英文标题】:Format and Error in my code for a Custom TableView + Segment Controller 【发布时间】:2017-07-30 23:20:41 【问题描述】:

所以我创建了一个 View Controller,它有两个 TableView 和一个 Segment Control。下面的代码给了我两个错误。

    (return serviceImage.count) 给我一个错误,说返回后的代码将永远不会被执行。

2.(cell.myReviewPic!.image = UIImage(named: reviewPhoto[indexPath.row])) 在展开可选值时返回错误意外发现 nil

我的代码

@IBAction func segmentedControlChanged(_ sender: Any) 
    myTableServiceU.reloadData()
    myTableService.reloadData()



@IBOutlet weak var segmentControl: UISegmentedControl!
@IBOutlet weak var myTableServiceU: UITableView!
@IBOutlet weak var myTableService: UITableView!

let serviceName: [String] = ["Whataburger", "Red Lobster", "Pizzahut", "McDonalds", "Burger King", "Sushi Garden", "In & Out Burger", "Canes", "Jimmy Johns"]

let serviceImage: [String] = ["place1,", "place2", "plac3", "place4", "place5", "place6", "place7", "place8", "place9"]

let serviceNumber: [String] = ["38", "35", "29", "25", "23", "19", "17", "12", "11"]

let brandPhoto: [String] = ["TK", "MC", "BA"]


override func viewDidLoad() 
    super.viewDidLoad()

    myTableService.dataSource = self
    myTableService.delegate = self


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    switch(segmentControl.selectedSegmentIndex)
    
    case 0:
        return  brandPhoto.count
    case 1:
        return  serviceName.count
        return  serviceImage.count
        return  serviceNumber.count
        break
    default:
        break
    

    return 0


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ServiceCell


    switch(segmentControl.selectedSegmentIndex)
    
    case 0:
        cell.myReviewPic.image = UIImage(named: brandPhoto[indexPath.row])
        break

    case 1:
        cell.myServiceName.text = serviceName[indexPath.row]
        cell.myServiceImage.image = UIImage(named: serviceImage[indexPath.row])
        cell.myServiceNumber.text = serviceNumber[indexPath.row]
        break

    default:
        break
    

    return cell

【问题讨论】:

你想用 3 个回报来完成什么? 【参考方案1】:
return  serviceName.count
return  serviceImage.count // Line will be ignored
return  serviceNumber.count // Line will be ignored

[...] 返回后的代码永远不会被执行。

这只是一个警告,因为只有 serviceName 数组会返回它的计数。

cell.myReviewPic!.image = UIImage(named: reviewPhoto[indexPath.row]))

在展开可选值时意外发现 nil

myReviewPic 为 nil,您正在尝试使用 ! 强制解包它。可能没有通过 IBOutlet 连接到您的 ServiceCell nib/xib。

【讨论】:

以上是关于自定义 TableView + 段控制器代码中的格式和错误的主要内容,如果未能解决你的问题,请参考以下文章

当点击自定义 TableView 单元格中的 UITextField 时转到新视图

自定义 tableview 单元 xib 出口返回 nil

如何使用 plist 中的数据阻止或禁用 Tableview 中的自定义单元格?

Tableview 上下文菜单:从行到预览视图控制器的自定义动画

Swift:TableView 控制器和段值更改

重用自定义 tableView 单元格时重复显示相同的子视图(Swift 4.1)