“的UITableViewCell?没有名为'textLabel'的成员

时间:2014-10-02 06:17:19

标签: ios uitableview swift tableview

我一直在寻找这个问题的答案,但没有取得任何成功。我基本上遵循一个教程来创建一个简单的待办事项应用程序,许多其他人正在评论与下面相同的错误。作者还没有解决方案。任何帮助,将不胜感激。

我收到错误:'UITableViewCell?'没有名为'textLabel'的成员

到目前为止,这是我的代码:

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    // tells iphone what to put in each cell
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 4

}

    // Tells iphone how many cells ther are
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

    cell.textLabel?.text = "table cell content"

    return cell!

}

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.
}


}

4 个答案:

答案 0 :(得分:2)

我正在遵循相同的教程,所以我能感受到你的痛苦! :)在教程中,伙伴你删除并重新创建视图控制器,然后他忘记提到你需要再次命名你的视图控制器。无论如何,为了节省一些恶化,只需创建一个新项目,将表视图拖放到视图控制器中,右键单击表视图,然后将dataSource,delegate和view链接到View Controller。

接下来,这是从XCode 6.1起适用于我的代码。上帝知道接下来会改变什么。但总之,你不需要'?'在textLabel之后。

import UIKit

class ViewController: UIViewController, UITableViewDelegate {

    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.
    }

    var items = ["test 1", "test 2", "test 3", "test 4"]

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }

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

        let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
        cell.textLabel.text = self.items[indexPath.row]
        return cell
    }


}

希望有所帮助。

答案 1 :(得分:2)

我今天不得不与同样/类似的问题作斗争。这是因为您尝试在标准表视图控制器中使用自定义单元格。您需要告诉函数中的控制器,具有自定义名称的单元格应该用作(=而不是)TableViewCell。然后Xcode将知道在哪里寻找名称。

因此,在您输入indexPath的右括号之后:

import UIKit

class ViewController: UIViewController {

    //MARK: - Outlets
    @IBOutlet weak var lesGroupes: UISegmentedControl!

    //MRK: - Properties
    var tousGroupes = "Tous les groupes"
    var mesGroupes = "Mes Groupes suivis"
    var tousCounter = 34
    var mesCounter = 0
    var attributesTousGroupes = []
    var attributesMesGroupes = []
    var dividerImage = UIImage(named: "dividerImage")

    override func viewDidLoad() {
        super.viewDidLoad()

        //Clear the border colors of the segmented control and put in the divider image. The image you can pcik yourself. I just got one of the internet.
        self.lesGroupes.tintColor = UIColor.clearColor()
        self.lesGroupes.setDividerImage(self.dividerImage, forLeftSegmentState: .Normal, rightSegmentState: .Normal, barMetrics: .Default)

        //Now adjust the title of the segmented control. I assumed the numbers are some counter telling the user the number of people in the groups.
        self.tousGroupes.appendContentsOf(" (\(self.tousCounter))")
        self.mesGroupes.appendContentsOf(" (\(self.mesCounter))")

        //Once the new title strings are defined the titles of the segmented controls can be set.
        self.lesGroupes.setTitle(self.tousGroupes, forSegmentAtIndex: 0)
        self.lesGroupes.setTitle(self.mesGroupes, forSegmentAtIndex: 1)

        //Please, remember. You set the entire color of the segmented control to clearcolor, which means no color. Now you have to set the title color of each segment seperately. I assumed when the segment is selected, you want the color to be red and the standard color is black.
        self.lesGroupes.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.blackColor()], forState: .Normal)
        self.lesGroupes.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.redColor()], forState: .Selected)
    }
}

答案 2 :(得分:1)

试试这个:

var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

cell.textLabel?.text = "table cell content"

return cell!

答案 3 :(得分:0)

这应该可以解决问题

cell?.textLabel?.text = array [indexPath.row]

我假设您使用的是6.1,因为这不是6.0.1中的问题,但它们在最新版本中再次更改了内容。

希望这适合你