2016-02-03 1 views
0

У меня есть tableView с пользовательскими ячейками. Каждая пользовательская ячейка имеет текстовое поле. Когда пользователь нажимает на текстовое поле, я хочу, чтобы на экране появлялись новые ячейки.Reload TableView после нажатия на пользовательский элемент UITextField

Это то, что я пытаюсь:

func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 
    /* 
    ...code to determine which new cells should be added in from my data structure 
    */ 
    self.tableView.reloadData() 
    return true 
} 

Однако каждый раз reloadData называется, я думаю, делегат снова звонит textFieldShouldBeginEditing, так что я застрять в бесконечном цикле и метод никогда не возвращается.

Любые идеи о том, как я могу избежать этой проблемы?

ответ

0

Я думаю, что вы ищете вызов insertRowsAtIndexPaths вместо перезагрузки всей таблицы.

func insertRowsAtIndexPaths(_ indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 

другой переполнение стека post you should look at

вот ссылка на Apple docs

иметь в виду, вы, когда делаете это, вы должны держать свой источник данных в актуальном состоянии, а также. обновите источник данных до вызова insertRowsAtIndexPath

+0

Спасибо! Именно то, что я искал! –

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