2014-12-03 6 views
0

Когда ячейка выбрана, я хочу, чтобы она была проверена. Я также хочу, чтобы любая другая ячейка была проверена, чтобы не иметь аксессуаров. К сожалению, я получаю сообщение об ошибке, в котором говорится, что я не могу изменить тип accessoriesType. Это потому, что я использую visibleCells(), чтобы получить ячейки? Как преодолеть эту ошибку?Невозможно назначить «принадлежность» в UITableViewCell

Я пробовал не использовать константы; У меня такая же ошибка. Я просмотрел ссылку на UITableView & UITableViewCell, но я не видел ничего, что могло бы мне помочь. Мой план резервного копирования - использовать представление Picker, но я бы предпочел использовать Table View из-за его дизайна.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cell = tableView.cellForRowAtIndexPath(indexPath) 
    let cells = tableView.visibleCells() 
    for oldCell in cells { 
     if(oldCell.accessoryType == UITableViewCellAccessoryType.Checkmark) { 
      oldCell.accessoryType = .None //Cannot assign to 'accessoryType' in 'oldCell' 
     } 
    } 
    cell!.accessoryType = .Checkmark 
    day = cell!.textLabel!.text! 
    self.tableView.deselectRowAtIndexPath(indexPath, animated: true) 
} 

ответ

2

Глядя на API documentation, visibleCells() возвращается [AnyObject]. Из-за безопасности типа Swifts он не позволит вам установить accessoryType на AnyObject - это должно быть UITableViewCell.

Попробуйте следующее ...

if let cells = tableView.visibleCells() as? [UITableViewCell] { 
    for oldCell in cells { 
    if oldCell.accessoryType == .Checkmark { 
     oldCell.accessoryType = .None 
    } 
    } 
} 
Смежные вопросы