在展开和折叠表单元格使用问题 swift Xcode 8.2 3

标签: Xcode ios Swift
发布时间: 2017/1/22 23:18:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图展开和折叠的表视图单元格通过单击它们。我跟着教程https://www.youtube.com/watch?v=LqHzHkuXRxQ&t=89s。做所有的事情完全一样在这个视频。它是成功运行没有任何错误或警告。但不是能查看中表视图单元格的内容。它只是显示一个空表。这是 Xcode 的版本问题。在本教程中,他使用 Xcode 7,我猜。我使用 Xcode 8.2。我不知道什么我应该所做的更改,以查看在表视图单元格的内容。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    var selectedIndex = -1
    var dataArray : [[String:String]] = [["FirstName" : "Arun", "LastName" : "Gupta"],["FirstName" : "John", "LastName" : "Cena"],["FirstName" : "James" , "LastName" : "Bond"],["FirstName" : "Iron", "LastName" : "Man"]]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count
    }

    func tableView(tableView: UITableView,heightForRowAtIndexPath indexPath: NSIndexPath) ->CGFloat
    {
        if(selectedIndex == indexPath.row) {
            return 100;
        }
        else{
            return 40;
        }
    }
    func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) ->UITableViewCell{
        let cellIdentifier = "Cell"
        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as! customCell
        let obj = dataArray[indexPath.row]
        cell.firstViewLabel.text = obj["FirstName"]
        cell.secondViewLabel.text = obj["LastName"]
        return cell;
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        if(selectedIndex == indexPath.row) {
            selectedIndex = -1
        } else {
            selectedIndex = indexPath.row
        }
        self.tableView.beginUpdates()
        self.tableView.reloadRows(at: [indexPath as IndexPath], with: UITableViewRowAnimation.automatic)
        self.tableView.endUpdates()
    }

}



import UIKit

class customCell: UITableViewCell {

    @IBOutlet weak var firstView: UIView!
    @IBOutlet weak var firstViewLabel: UILabel!
    @IBOutlet weak var secondView: UIView!
    @IBOutlet weak var secondViewLabel: UILabel!
    @IBOutlet weak var secondHeightConstraint: NSLayoutConstraint!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    var showsDetails = false {
        didSet {
            secondHeightConstraint.priority = showsDetails ? 250 : 999
        }
    }
}

解决方法 1:

你还没有供应 UITableViewDelegateUITableViewDataSource

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

在你 viewDidLoad() :

tableView.dataSource = self
tableView.delegate = self
官方微信
官方QQ群
31647020