2014-12-18 5 views
-5

У меня есть настраиваемый редактируемый UITableview, и мой вопрос заключается в том, как сохранить его значение в NSDictionary, когда я нажал кнопку отправки. Моя таблица похожа на простую регистрационную форму.хранить данные в nsdictionary от uitableview

+2

А что вы закодированы для этого – Leena

+0

я использую пользовательские uitablviewcell, в котором у меня есть два текстовых поля (т.е. возраст и пол) Итак, мой вопрос заключается в том сохранить эти 2 текстовых поля в теге nsdictionary через тег? –

+1

[yourdict setObject: textfield.text forKey: propertyName]; было так сложно .... – Leena

ответ

1

Расширение на мой комментарий:

Если я понимаю вас, вы хотите получить данные из UItableViewCell обратно в viewController с помощью tableView и словаря.

Существует два основных способа сделать это: вы можете создать делегат для ячейки или создать блок в ячейке. Поэтому, как только текстовые файлы закончены, отредактируйте вызов делегата/блока с новыми данными. Тогда есть вк сохранить его

Использование блока:

MyTableViewCell.h

@interface MyTableViewCell : UITableViewCell 

@property (nonatomic, copy) void (^nameChangedBlock)(NSString *name); 

@end 

MyTableViewCell.m

В чем-то вроде: текстовое поле didFinishEditing

- (void)textFieldDidFinishEditing:(UITextField *)textField { 

    if (textField == self.nameTextfield) { 

     self.nameChangedBlock(textField.text) 

    } 
} 

В ViewController с TableView, в методе datasource cellforRow

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

// Do your standard stuff create the cell and set data; 
// dequeueReusableCellWithIdentifier: blah blah 

    cell.nameChangedBlock = ^{ 
     // Alex j thank you 
     [yourNSMutableDictionary setObject:yourobject forKey:yourkey]; 
    }; 

    return cell 
} 
0

Если у вас есть ссылки на текстовые поля, просто сделать:

[yourNSMutableDictionary setObject:yourobject forKey:yourkey]; 

редактирования * если вы хотите получать информацию от вашего UITableView клик, проверить эту ссылку Use UITableViewCell as Button

+0

ya Я знаю это, но как хранить данные в nsdictionary через кнопку щелчка по таблице? –

+0

обновленный ответ, надеюсь, что это поможет –

0

Вместо того, чтобы хранить всю информацию о отводе кнопку Submit, я предлагаю, чтобы сохранить его, - (void)textFieldDidEndEditing:(UITextField *)textField, который делегирует метод UITextField.

Если вы показываете четкую кнопку (крест-значок) в UITextField, вам необходимо очистить определенную строку от NSDictionary, когда пользователь коснется кнопки очистки. Для этого вы должны добавить, - (BOOL)textFieldShouldClear:(UITextField *)textField тоже.

Если вы используете UITextView, то также укажите соответствующий делегат для него.

Причина это,

  • Вы имеете информацию о пользователях в реальном времени, означает, что вы имеете несколько полей в форме, Имя, Фамилия, адрес, дата рождения и т.д. Когда пользователь в «Имя», и когда фокус (нажмите, чтобы изменить) для «Фамилия» (или любого другого поля), textFieldDidEndEditing получит вызов, и вы сможете сохранить имя в словаре.

  • В то же время, если вы показываете кнопку очистки, когда пользователь нажимает на нее, когда он находится в поле «Имя», тогда textFieldShouldClear получит звонок, первое имя будет удалено из словаря сразу.

  • Если вы готовите большую регистрационную форму (или любую другую форму). Скажем, например, принимая 20 значений от пользователя, если вы не используете этот подход, информация пользователя останется видимой в форме. Потому что в любое время вы можете получить и показать определенное значение из словаря.


Пример,

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    NSString *getKey = [self keyForTag:textField.tag]; 
    if(textField.text.length != 0) { 
    [dictionary setValue:textField.text forKey:getKey]; } 
} 

- (BOOL)textFieldShouldClear:(UITextField *)textField { 
    NSString *getKey = [self keyForTag:textField.tag]; 
    if([dictionary valueForKey:getKey]) { 
    [dictionary removeValueForKey:getKey];} 
} 

- (NSString *)keyForTag:(NSInteger)tag { 
    if(tag == 1) { 
     return @"kFirstName"; 
    } 
    else if(tag == 2) { 
     return @"kLastName"; 
    } 
    ... 
} 

- (NSString *)showValueForTag:(NSInteger)tag { 
    return [dictionary valueForKey:[self keyForTag:tag]]; 
} 
Смежные вопросы