Добавить UITextField в UITableView одним нажатием кнопки - PullRequest
1 голос
/ 15 декабря 2009

После довольно долгого изучения интернета я решил приехать сюда, потому что на мои вопросы я отвечаю очень быстро и очень хорошо на Stack Overflow!

Я пытаюсь выполнить следующее и был бы признателен за любые предложения или указатели в правильном направлении:

  • Отображение UITableView
  • При нажатии кнопки «+» в строку UITableView добавляется UITextField
  • Пользователь может ввести строку в это поле
  • Если пользователь снова нажимает кнопку «+», к следующему ряду добавляется другое поле UIText. (Вы поняли)
  • Когда пользователь завершит добавление UITextFields и заполнит их, он может нажать кнопку «Сохранить», после чего все записи в каждой строке будут сохранены в массив.

Любые предложения по этому поводу будут с благодарностью

Спасибо!

Tom

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Этот псевдокод может быть отправной точкой:

// define an NSMutableArray called fields

- (IBAction)addField:(id)sender {
    // create a new text field here and add it to the array
    // then reload data
}

- (IBAction)save:(id)sender {
    for(UITextField *textField in fields) {
        // whatever you have to do
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // you have as many rows as textfields
    return [fields count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    // Set up the cell...
    // For row N, you add the textfield N to the array.
    [cell addSubview:(UITextField *)[fields objectAtIndex:indexPath.row]];
}
0 голосов
/ 17 сентября 2018

ОБНОВЛЕНИЕ ДЛЯ SWIFT 4

Вместо перезагрузки всей таблицы вы можете использовать здесь beginUpdate и endUpdate.

Добавить цель к кнопке ячейки (Вы можете использовать тег представления или создать новый класс TableviewCell).

    cell.addBtn.tag = indexPath.row
    cell.addBtn.addTarget(self, action: #selector(self.addTextField(_:)), for: UIControlEvents.touchUpInside)
    cell.txtField.tag = indexPath.row

Затем реализуйте этот метод:

@objc func addTextField(_ sender:UIButton) {

    let indexPath = IndexPath(row: sender.tag, section: 0)

    if let cell = tblView.cellForRow(at: indexPath) as? TableCell {
        tblArray.append(cell.txtField.text!)
    }

    let newRow = IndexPath(row: sender.tag + 1, section: 0)
    tblView.beginUpdates()
    tblView.insertRows(at: [newRow], with: .left) 
    tblView.endUpdates()
}

Не забудьте поставить var tblArray:[Any] = [""] при запуске.

Надеюсь, это кто-нибудь, кто ищет ответ Свифта.

Удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...