2015-04-06 4 views
1

У меня небольшая проблема с ячейками в uitableview.Значения текстовых полей в UITableViewCell - iOS ObjC

Я создаю свойство в одной клетке, и я хочу, чтобы захватить значение от них и послал к моему WebService:

@property (weak, nonatomic) IBOutlet UILabel *profileValueLabel; 
@property (weak, nonatomic) IBOutlet UITextField *profileTextfield; 

profileValueLabel просто текст, это нормально, но мне нужно, чтобы принять profileTextField значения и отправить его с мое обслуживание.

Любая помощь?

+0

Когда вам нужны данные? Ожидаете ли вы, что пользователи будут вводить текст в UITextField, и отправьте его после их написания? – marosoaie

+0

Да, они открывают табличное представление как редактирование профиля и заполняют текстовые поля, затем они будут касаться назад, и данные будут отправляться по сервису, но я не знаю, как теперь отправить его на этот номер – Peter

ответ

0

Свойство profileTextfield должно находиться в файле заголовка для вашего подкласса UITableViewCell. Затем в вашем контроллере UITableViewDataSource вы должны использовать [myTableView cellForRowAtIndexPath:yourCellsIndexPath].profileTextfield.text, как только вы определите путь индекса для ячейки, текст текстового поля которой вы хотите захватить.

Если вы хотите захватить свойство profileTextfield, как только ваш пользователь выполнит ввод данных, вам необходимо будет создать протокол в вашем подклассе UITableViewCell и соответствующее свойство делегата. Затем вы создаете метод протокола, например -(void)tableViewCell:(myUITableViewCellSubclass *)cell didEndEditingProfileTextFieldWithText:(NSString *)text; Затем в подклассе UITableViewCell установите делегат profileTextField в подклассу UITableViewCell и используйте метод делегата или textFieldWillReturn:. В зависимости от того, какой метод вы используете, позвоните по методу [self.delegate tableViewCell:self didEndEditingProfileTextFieldWithText:self.profileTextfield.text]. Ваш TableViewController должен обрабатывать этот метод, и вы можете делать все, что вам нужно.

1

Лучше всего, чтобы ваш подкласс UITableViewCell соответствовал UITextFieldDelegate, а затем создайте протокол (делегат) для подкласса ячейки таблицы, который запускается при вызове метода UITextFieldEndEditing и передает непосредственно ячейку представления таблицы (возможно, вместе с текстовыми данными, которые вы хотите отправить на веб-службу) в метод делегата, чтобы в вашем контроллере просмотра вы могли определить путь индекса на основе ячейки в таблице. Затем, в вашем контроллере просмотра, вы можете отправлять данные в каждую ячейку на веб-службу всякий раз, когда вы вызываете метод делегирования. Это, пожалуй, самый чистый подход, но лучше всего инкапсулировать эту логику в класс табличного представления, чтобы уменьшить ваш контроллер представления и сделать связь между этими двумя компонентами более явной.

0

Надеюсь, вы внедрили делегатов UITableView, onE Подход NSString * tempString1; NSString * tempString2 - (Недействительными) Tableview: (UITableView *) Tableview didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

UITableViewCell *cell1 = [tableView cellForRowAtIndexPath:indexPath]; 
tempString1= cell1.textLabel.text; //<-- your label 

*tempString2= cell1.textfeild.text ; // u can access the value , 

} вторая часть вопроса //
Вам нужно встроить tempString и tempString2 переменную запрос на обслуживание.

+0

, а как насчет indexPath? Его не целочисленный массив ... Мне нужно, например, третье текстовое поле. – Peter

+0

Я не уверен, что вы хотите сказать здесь, к тому, что я вижу, если вы хотите сделать операцию выше для номера третьей строки , вы можете поставить чек, как if (indexpath.row == 2) { // выше код } , или если вы хотите сделать это для третьего текстового поля anyrow , то вы можете использовать вышеуказанный код, просто измените имя textlabel/textfeild по вашему желанию –

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