2012-04-25 2 views
0

У меня есть контроллер навигации и 2 контроллера просмотров. Первый контроллер просмотра связан с UIViewController с именем ViewController. Второй подключен к UIViewController с именем BookVC. BookVC имеет UITextField и соединен через выход:Подключение данных в MVC

@property (strong, nonatomic) IBOutlet UITextField *textFieldContent; 

Соединение осуществляется с помощью кнопки, которая использует SEGUE. Я хочу передать некоторые данные между ними и я использую следующий код, который терпит неудачу:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
BookVC* nextPage = [[BookVC alloc] init]; 
nextPage = [segue destinationViewController]; 
[email protected]"Some content"; 
} 

Как я должен передавать данные между контроллерами View?

ответ

0

Я думаю, проблема в том, что textFieldContent не существует в этой точке. Вам нужно добавить свойство в BookVC, которое может содержать текст, который вы хотите поместить в textFieldContent ... мы назовем его @property NSString *textFieldContentText. Итак,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    BookVC *nextPage = [segue destinationViewController]; 
    [nextPage setTextFieldContentText:@"Some content"]; 
    ... 
} 

И затем, в -viewDidLoadBookVC методом:

- (void)viewDidLoad 
{ 
    [textFieldContent setText:[self textFieldContentText]]; 
} 
+0

Я думаю, что я почти там. Я думаю, что файл отправки должен иметь: BookVC * nextPage = [segue destinationViewController]; UITextField * tf; tf.text = @ "Некоторое содержание"; [nextPage setTextFieldContent: tf]; Однако я не понимаю оператор viewDidLoad. \t [nextPage setTextFieldContent: tf]; – SimonRH

+0

Первый контроллер не знает о текстовом поле второго контроллера. Он просто устанавливает строку, которая в конечном итоге будет помещена в 'textFieldContent' BookVC'. Метод '-viewDidLoad'' BookVC' вызывается автоматически при его загрузке. В этот момент вы знаете, что существует метка textFieldContent, и ее текст может быть установлен, поэтому вы делаете это там. Ознакомьтесь с документами 'UIViewController' и методом' -viewDidLoad'. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html – macserv

+0

Игнорировать последний комментарий. Ваше объяснение совершенное. Спасибо! – SimonRH

0

Вам не нужна эта строка:

BookVC* nextPage = [[BookVC alloc] init]; 

Это создает совершенно новый BookVC, которые вы затем пойти и перезаписать в следующей строке.

Поскольку вы используете [segue destinationViewController], вам должно быть хорошо идти. Что происходит, когда вы переходите к следующей странице?

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