2016-02-09 2 views
0

Я создал UITableView с пользовательскими ячейками. Я получил 5 ячеек с PickerView внутри и еще один с UITextField.Получить все пользовательские свойства UICell в UITableView

Я хотел бы получить все значения свойств этих ячеек, когда я нажимаю кнопку (что означает UITextField text и значения UIPickView).

До сих пор я пробовал self.mainTableView visibleCells, я получаю некоторую информацию, но ничего о значениях свойств моих ячеек.

Есть ли способ получить все значения, помещенные в мои ячейки?

ответ

0

Использование двойной для вас может иметь каждую клетку:

for (int i = 0; i < [self.mainTableView numberOfSections]; i++) { 
    for (int j = 0; j < [self.mainTableView numberOfRowsInSection:i]; j++){ 
     UITableViewCell *cell = [self.mainTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:j inSection:i]] 
     // Get your value 
    } 
} 

Но вы должны проверить «параметры повторного использования» на Tableview.

+0

Спасибо за это, но я не понимаю, что вы подразумеваете под «настройками повторного использования». Это о том, как я создаю свою ячейку? –

+0

Да, если вы используете 'dequeueReusableCellWithIdentifier:' для создания ячейки, вы потеряете значения после исчезновения ячейки. – Matt39

0

Вы должны создать соединение между ячейками и классом, который выполняет действия (при нажатии кнопки). Это может быть некоторый делегат или блок, который информирует об изменении значения textFields или UIPicker.

@protocol SomeCustomCellDelegate <NSObject> 

- (void)onValueChanged:(NSString *)value atCell:(UITableViewCell *)cell 

@end 

Петля непосредственно через ячейки - плохая идея, потому что это небезопасно.

+0

Спасибо за ответ, я использую тот же класс для своих 6 ячеек, думаю, если я сделаю это по-своему, мне нужно установить cell.tag? –

+0

Нет, вы можете получить NSIndexPath ячейки, используя tableView [indexPathForCell:] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/ indexPathForCell :). –