2014-12-31 2 views
3

У меня есть переменная для хранения объектов пользовательского класса, которые я загрузил в UITableView.Swift: Clear UITableView Cells

Я даю пользователю возможность очистить все. Когда это выполняется, я очищаю массив, в котором хранятся все игроки, но как очистить TableView?

Я пробовал tableView.reloadData(), но ничего не делает.

пользовательского класса & глобальной переменной:

var players: [AnyObject] = [] 
Class Player{ 
    var playerName: String? 

    init(name:String){ 
     playerName = name 
    } 
} 

Пользовательские Cell cellForRowAtIndexPath:

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

    let cell: CustomMainCell = tableView.dequeueReusableCellWithIdentifier("CustomMainCell") as CustomMainCell 
    // Get Player 
     let thisPlayer:Player = players[indexPath.row] as Player 

     cell.nameLabel?.text = thisPlayer.playerName 
    } 

    return cell 
} 

Настройки Clear Функция:

alertController.addAction(UIAlertAction(title: "Clear Players?", style: .Default, handler: { (action: UIAlertAction!) in 
      players.removeAll() 
      self.tableView.reloadData() 
     })) 
+0

Выполняется ли вызов tableView.reloadData() 'в основном потоке/очереди? –

+0

Перезагрузка данных должна работать, если ваш массив пуст в то время, когда вы его вызываете. Вы должны показать код, который используете. – rdelmar

+0

Измените свой вопрос, чтобы отобразить соответствующий код. Вы также использовали отладчик для выполнения кода и подтверждения, что массив пуст? –

ответ

12

Очистка массива перед тем вызова tableView.reloadData() должен работать.

Я предполагаю, что ваши numberOfRowsInSection: и cellForRowAtIndexPath: также используют данные массива для возврата правильных значений/объектов.

+0

В этом была проблема. Я использовал другую переменную, чтобы отслеживать количество игроков ... ** СПАСИБО! ** – vmitchell85

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