2012-05-04 3 views
0

Я создаю приложение в XCode 4.2, используя функцию раскадровки. У меня есть 4 вида, подключенных на основе навигационного контроллера. В одном из представлений у меня есть текстовое поле и кнопка. Я реализовал скрытие клавиатуры при возврате, добавив текстовое поле в качестве деления. Как только я закончу ввод в поле текстового поля, я нажму кнопку, и он должен обновить UIImageView.Обновление UIImageView при нажатии кнопки

Я понимаю, что мне нужно установить какое-то отношение между UIImageView в Interface Builder и UIImageView IBoutlet, которое я указал в файле интерфейса. Но как мне это сделать в ситуации с раскадрой?

В abcViewController.h я есть

 
@interface abcViewController:UIViewController { 
    IBOutlet UITextField *code;  
    IBOutlet UIImageView *qrImage; 
} 
@property (noatomic, retain) UITextField *code; 
@property (noatomic, retain) UIImageView *qrImage 
-(IBAction)textFieldReturn:(id)sender; 
-(IBAction)goButton:(id)sender; 

В abcViewController.m я есть

 
@synthesize code; 
@synthasize qrImage; 
-(IBAction)textFieldReturn:(id)sender{ 
    [sender resignFirstResponder]; 
} 
-(IBAction)goPressed:(id)sender{ 
    [qrImage setImage:[UIImage imageNamed:@"qr.png"]]; 
} 

В Interface Builder MainStoryboard.storyboard я установил связь в функции представления First Responder для текстового поля-х textFieldReturn и кнопки он goPress к соответствующим событиям, и я связал текстовое поле как разделитель этого представления. Теперь мне нужно подключить UIImageViewer к «Первому ответчику»? Если да, то как?

ответ

1

Я думаю, вы можете использовать несколько терминов неправильно, но есть два различных типа соединений вы можете сделать между видом в Interface Builder и кода. Когда вы говорите, что вы «установили отношения» между 1-м сообщением и кнопкой и текстовым полем, похоже, что вы связали свои действия. То, что это делает, создает путь от вид (кнопка, текстовое поле и т. Д.), - объект, к которому вы подключили его (в данном случае первый ответил, что по существу является abcViewController). Подумайте об этом как о пути в одну сторону; все, что он делает, это эти элементы управления (кнопка и текстовое поле), где они должны отправлять сообщение, когда пришло время, потому что и произошло событие. Поэтому, когда нажата кнопка get, у нее есть встроенное поведение отправки сообщения где-нибудь, если оно подключено. Вы подключили его к действию goPressed: на abcViewController, так вот что он делает.

На другой стороне монеты удостоверяется, что контроллер вида может отправлять сообщения обратно на элементы управления. Вот для чего нужны точки выхода. Это не похоже на то, что вы настроили какие-либо торговые точки, поэтому abcViewController не имеет способа отправить сообщение на изображение, которое оно должно отобразить, или изменить его образ или что-то еще.

Первое, что вы должны сделать, это определить свои свойства, как IBOutlets также, так как:

@property (noatomic, retain) IBOutlet UITextField *code; 

Затем, когда вы вернетесь к Interface Builder, если вы идете на вкладку соединения инспектора, когда первый Выбран ответчик, вы увидите, что он отображает все его торговые точки. Вы захотите подключить (перетащить точку) к розетке первого ответчика (abcViewController) к соответствующему виду.Это создает путь от контроллер вида до вид (напротив того, что вы сделали с действием).

Как только это будет сделано, если вы сообщите объекту что-то сделать в своем коде, это сообщение будет передано по пути к объекту, который создается из XIB при загрузке вашего представления.

+0

спасибо за это, я попробую это и дам вам знать! – Deepak

+0

сочетание вашего решения, а другое сработало для меня !! Спасибо!! – Deepak

1

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

enter image description here

Затем связал объекты, объявленные в коде к объектам в раскадровке, это перетащить, как это было с xibs.

enter image description here

+0

Мне нужно сделать первый шаг для всего вида, который я создал? – Deepak

+0

Я так считаю. Вот как вы можете установить разные классы для каждого контроллера вида, который вы добавляете в свою раскадровку. –

+0

, но у меня есть только один класс viewcontroller, поэтому есть что сказать здесь – Deepak

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