2014-03-27 3 views
0

У меня возникли проблемы с редактированием имен в ячейке после ввода пользователем этих данных.

По существу они нажимают кнопку «добавить имя», Подробный контроллер и введите их имя и фамилию и нажмите «done». Этот делегат возвращается к главному контроллеру, и ячейка обновляется, чтобы показать это имя.
Я хочу, чтобы они могли вводить много имен, а затем после этого нажимать на ячейку, которая возвращает их к уже введенным данным (которые хранятся в NSMutableArray, называемом «entry»).

Редактирование текстового поля в дополнительном контроллере после нажатия на ячейку

-(void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { 
    self.detailView.firstNameField.text = [[self.entry objectAtIndex:indexPath.row]firstName]]; 
    NSLog(@"%@",[[self.entry objectAtIndex:indexPath.row]firstName]); 
    NSLog(@"%@", self.detailView.firstNameField.text); 
} 

Первый NSLog показывает имя просто отлично, но второй возвращается как «нуль» и текстовые поля пустые, готовы к добавил новое имя ...
Все и любая помощь очень оценил :)

+0

Как создать self.detailVIew.firstNameField? – CW0007007

+0

В моем основном виде controller.h с @property DetailViewController * detailView – Julia

+0

Нет, я имел в виду firstNameField ... – CW0007007

ответ

1

Я думаю, что вы делаете это не так, как это работает, вы не устанавливаете значения непосредственно на UITextfield, вместо этого вы передаете ему NSString, который будет свойством вашей модели.

В этом весь смысл MVC данные не должны взаимодействовать непосредственно с UI.

В вашей MasterViewController вам нужно импортировать DetailViewController заголовок:

#import "DetailViewController.h" 

выполнить переход в didSelectedRow:

-(void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { 
    [self performSegueWithIdentifier:@"detailSegue" sender:sender]; 
} 

осуществлению SEGUE deleguate и установить его свойство ПгвЬЫате (NSSrting)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
// Make sure your segue name in storyboard is the same as this line 
if([segue.identifier isEqualToString:@"detailSegue"]){ 

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

    DetailViewController*detailView = (DetailViewController*)segue.destinationViewController; 
    detailVC.firstName =[[self.entry objectAtIndex:indexPath.row]firstName]]; 

    NSLog(@"%@",[[self.entry objectAtIndex:indexPath.row]firstName]); 
    } 
} 

, то в viewDidLoad из DetailView вы бы присвоить firstName строку текста собственности UItextfield:

_firstNameField.text = self.firstName; 
+0

Большое вам спасибо! отлично работал, ты ангел :) – Julia

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