我一直在寻找这个问题的答案,但没有取得任何成功。我基本上遵循一个教程来创建一个简单的待办事项应用程序,许多其他人正在评论与下面相同的错误。作者还没有解决方案。任何帮助,将不胜感激。
我收到错误:'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.
}
}
答案 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中的问题,但它们在最新版本中再次更改了内容。
希望这适合你