2015-08-27 3 views
1

У меня есть UITableViewController с тремя ярлыками. Первые два из .textLabel и .detailTextLabel, я добавил третий ярлык в раскадровку и подключил его к файлу UITableViewCell. Когда я запустил приложение, произойдет сбой, если метка не будет установлена ​​как опция с символом «?», Но в таблице ничего не отображается. Если у него нет необязательного знака, он падает, и я получаю ответ, говорящий «» «неожиданно нашел нуль при разворачивании необязательного значения». Остальные два .textLabel и .detailTextLabel работают нормально. Буду признателен за любую помощь!UILabel в UITableViewCell не отображается

Вот мой TableViewController Файл,

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 


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

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier(cellidentifier) as? ScoresPageCell 
    if (cell != nil) { 
     cell = ScoresPageCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellidentifier) 
    } 
    let groupscorelist: PFObject = self.groupscores.objectAtIndex(indexPath.row) as! PFObject 
    var scores: AnyObject = groupscorelist.objectForKey("Score")! 
    var user: AnyObject = groupscorelist.objectForKey("User")! 
    var info: AnyObject = groupscorelist.objectForKey("Info")! 
    cell!.textLabel?.text = "\(scores)" 
    cell?.detailTextLabel?.text = "\(user)" 
    cell!.UserNameCellLabel?.text = "\(info)" 


    return cell! 

} 

И мой UITableViewCell Файл,

class ScoresPageCell: UITableViewCell { 

    @IBOutlet var UserNameCellLabel: UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

} 
+1

Там довольно вопиющий ошибка здесь: 'если (cell! = nil) { cell = ScoresPageCell ... ' – NRitH

+0

Я согласен с @NRitH, а также если вы используете пользовательскую ячейку, реализуете две другие метки в пользовательский класс ячеек – Lamar

ответ

1

Следуйте этому моему другу:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier(cellidentifier, forIndexPath: indexPath) as! ScoresPageCell 


    let groupscorelist = self.groupscores[indexPath.row] 

    var scores = groupscorelist["Score"] as! String // cast it to String if they are string. 
    var user = groupscorelist["User"] as! String 
    var info = groupscorelist["Info"] as! String 

    cell!.text1?.text = scores 
    cell?.text2?.text = user 
    cell!.UserNameCellLabel?.text = info 
    return cell 
} 

class ScoresPageCell: UITableViewCell { 
@IBOutlet weak var text1: UILabel! 
@IBOutlet weak var text2: UILabel! 
@IBOutlet weak var UserNameCellLabel: UILabel! 

} 
+0

В целом, это выглядит хорошо. Я бы внес некоторые изменения: для 'cell! .text1? .text =" \ (score) "', вы можете просто назначить необработанную строку String ('cell! .text1? .text = score '); нет необходимости обертывать его в спецификаторе формата строки; и я объявляю три торговых точки «слабыми» в соответствии с рекомендациями Apple. – NRitH

+0

Попробуй .... И посмотри – Lamar

Смежные вопросы