Xcode 7 - 单元格内容未显示为空标签

时间:2015-09-20 09:33:14

标签: swift2

我试图将单元格内容显示为空的UILabel,但在升级到Xcode 7之后,内容并未显示出来。我遵循相同的机制,它在Xcode 6上工作,但由于我是Swift的新手,我可能在代码中出错了。

TableViewController:

import UIKit

class TableViewController: UITableViewController {

    struct dataModel {
        var name:String
        var val:Double
    }

    let foods = [dataModel(name: "name1", val: 3.3),
        dataModel(name: "name2", val: 5.5)]


    @IBOutlet var table: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    }

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

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return foods.count

    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)

        // Configure the cell...
        let foodCell = foods[indexPath.row]
        cell.textLabel?.text = foodCell.name


        return cell
    }


    var valueToPass:String!
    var valueInt:Int!

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        let indexPath = tableView.indexPathForSelectedRow;
        let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;

        valueToPass = currentCell.textLabel!.text

        performSegueWithIdentifier("showCalc", sender: self)





    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if (segue.identifier == "showCalc") {

            let viewController = segue.destinationViewController as! calcViewController
            viewController.passedValue = valueToPass
        }

    }
}

ViewController我想将抽头单元格显示为空标签:

import UIKit

class calcViewController: UIViewController {

    @IBOutlet var text: UILabel!

    @IBOutlet var empty1: UILabel!
    var passedValue:String!

    override func viewWillAppear(animated: Bool) {
        empty1.text = passedValue
    }
    override func viewDidLoad() {
        super.viewDidLoad()




        // Do any additional setup after loading the view.
    }

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

因此,没有错误,但空标签内没有显示任何内容。

我想要实现的另一件事是将Int值显示到另一个标签然后进行一些计算,但这将是另一个问题。提前致谢!

1 个答案:

答案 0 :(得分:2)

此代码中存在几个问题。首先,你显然缺少一些结束括号。但我认为这是一个复制粘贴错误。

  1. 为什么使用didDeselectRowAtIndexPath?你没有从表格视图单元格到下一个控制器的segue吗?然后,您应该使用prepareForSegue
  2. tableView.indexPathForSelectedRow中获取文字标签
  3. 如果您希望以这种方式保留,请使用didSelect...代替didDeselect...
  4. 您应该直接从数据而不是从单元格中获取要传递给下一个视图控制器的值。您有食物数组中表格中的数据。
  5. 班级名称应始终以大写字母开头。永远幸福!
  6. 在控制器中设置数据模型的设计很差。您应该在自己的文件中分隔结构。在这种情况下,您甚至可以将完整的数据对象传递给下一个视图控制器。