2016-02-15 3 views
0

Я новичок в Swift и у меня проблема.Вставьте динамические ячейки текстового поля в раздел в TableView - Swift

У меня есть контроллер TableView, который содержит 3 раздела, первые два состоят из одного текстового поля в одной ячейке. Однако для третьего в начале он имеет только одну ячейку (текстовое поле). Каждый раз, когда пользователь нажимает Return на текстовое поле, я хотел бы вставить одну строку, состоящую из одного текстового поля под редактируемым текстовым полем. (Например, когда вы добавляете несколько телефонных номеров в приложение «Контакты»).

Я создал UITextField массив: TextFieldArrayPayers

Мой код выглядит следующим образом: Connected к TextField, когда пользователь нажимает Return:

@IBAction func AddParticipant(sender: AnyObject) { 
     tableView.beginUpdates() 
     textFieldArrayPayers.append(UITextField()); 
     tableView.insertRowsAtIndexPaths([ 
      NSIndexPath(forRow: textFieldArrayPayers.count, inSection: 2) 
      ], withRowAnimation: .Automatic) 
     tableView.endUpdates() 

    } 

И управлять своими разделами:

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

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if section==2 
    { 
     return textFieldArrayPayers.count+1 
    } 
    else 
    { 
     return 1; 
    } 
} 

Когда я запускаю свою программу, я пытаюсь редактировать первое текстовое поле, и когда я нажимаю Enter или Return, я получаю следующее:

Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 

Я посмотрел на многочисленные подобные темы, но никогда не находил реальное решение ..

Спасибо заранее для тех, кто получил решение

+0

Что такое код для CEL lForRowAtIndexPath? – beyowulf

+0

Empty, я не знаю, как это осуществить .. – AntoineP

ответ

0

Обновить модель перед началом вашей партии обновления:

@IBAction func AddParticipant(sender: AnyObject) { 

     textFieldArrayPayers.append(UITextField()); 

     tableView.beginUpdates() 
     tableView.insertRowsAtIndexPaths([ 
      NSIndexPath(forRow: textFieldArrayPayers.count, inSection: 2) 
      ], withRowAnimation: .Automatic) 
     tableView.endUpdates() 

    } 

для получения дополнительной информации о см Table View Programming Guide for iOS

+0

Done, ничего не изменилось .. – AntoineP

+0

С этим: @IBAction Func AddParticipant (отправитель: AnyObject) { \t \t индекс ЛПЭ = NSIndexPath (forRow: textFieldArrayPayers.count, надрез: 2) \t \t myTableView.beginUpdates(); \t \t myTableView.insertRowsAtIndexPaths ([index], withRowAnimation: .Automatic); \t \t myTableView.endUpdates(); \t \t \t} – AntoineP

+0

Что ты говоришь? Код, который вы предоставили, исправил вашу проблему? Или это ваша интерпретация кода, который я предоставил? – beyowulf

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