2011-01-11 2 views
2

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

[(mainViewController *) [self.superview] имяПеременной];

, но теперь я хотел бы знать, как отправить данные переменных в подвид ...

специально, если я сделать что-то вроде этого

ScreenTwoViewController *screen2 = [[ScreenTwoViewController alloc] init]; 
... 
... 
[self.addSubview:screen2.view]; 

в screenTwo у меня есть имя переменного Сообщение:

Я хотел бы отправить переменное сообщение в фактическое представление, чтобы он мог отображать сообщение в этом представлении на основании того, что родительский вид отправляет его при добавлении представления screen2 в качестве подвью?

ответ

1

Хорошо, если вы задали свойство для переменных в подвидном виде следующим образом.

@property (nonatomic, retain) NSString *message;

, а также синтез его в файле .m, чем вы всегда можете использовать этот

screen2.message = [[NSString alloc] initWithFormat:@"use what ever init methode that you want"];

и не забудьте освободить screen2 до конца метода, чтобы избежать утечек памяти

+0

Это сработало отлично. Спасибо. – Pavan

0

У вас есть сеттер для Message? Если нет, это свойство? В любом случае, я бы геттер, setMessage:(NSString *)msg со следующей реализацией:

- (void)setMessage:(NSString *)msg { 
    [message release]; 
    message = [msg retain]; 
    // put your code to modify your UI here 
} 

Таким образом, вы обвязки присвоение переменной с обновлением вида.

+0

У меня нет сообщения setter на экране два контроллера представления, я хотел бы знать, как отправить переменную или установить переменную строку, так что, когда я добавляю subview, я также могу установить сообщение в одно и то же время, чтобы сообщение может отображаться ... при загрузке представления. – Pavan

+0

поэтому ... текущий вид делает следующее: экземпляр ScreenTwoViewController * screen2 = [[ScreenTwoViewController alloc] init]; blah blah когда тогда [self.addSubview: screen2]; я также должен как-то отправить строковую переменную, чтобы я мог установить сообщение внутри экрана2 ... так что это динамическое – Pavan

0

Вы можете создать новый метод init для ScreenTwoViewController. Например, - (id) initWithMessage:(NSString *)message.

Чтобы обновить сообщение, просто создайте метод setter - (void)setMessage:(NSString *)newMessage.

+0

BTW '(mainViewController *) [[self.superview] variableName];' на самом деле неправильно. Это должно быть '[(mainViewController *) [self.superview] variableName];' – benwong

+0

Спасибо за исправление. : D – Pavan

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