2010-04-11 2 views

ответ

0

Я бы воспользовался делегатом приложения. Или, если одно представление принадлежит другому, вы можете инициализировать их вместе и сохранить основную ссылку на него в классе.

Мне всегда полезно иметь глобальный объект Контекста для хранения глобальной информации среди просмотров. Это может быть информация о конфигурации, текущая ориентация устройства, обработчики базы данных и т. Д.

Для переменных, для которых необходим перекрестный доступ, вы можете использовать Свойства.

class VC1 : UIViewController { 
    NSString* v1; 
    NSString* v2; 
} 

@property (copy) NSString *v1; 
@property (copy) NSString *v2; 

А потом, в других точках зрения:

class VC2 : UIViewController { 
    VC1 *vc1; 
} 

И в вас реализациях сообщений в VC2 вы можете использовать v1 и v2 VC1 как это:

- (void) someMessage { 
    NSLog(@"VC1's v1 value is %@ and v2 value is %@", [vc1 v1], [vc1 v2]); 
} 

Надеется, что это помогает.

+0

Где мои переменные и как одно представление знает о переменных в другом? – Moshe

+0

Обновлен мой ответ с помощью некоторого кода. Надеюсь, поможет. –

+0

Выглядит хорошо, но как мне получить значение VC1 в VC2? Будет ли каждый контроллер просмотра видеть другой через делегата сейчас? – Moshe

1

Если вы хотите отправить информацию обратно, вы можете использовать целевое действие (как это делает UIControl), или вы можете отправить NSNotifications или использовать общий протокол делегатов. Если это не является информацией о применении во всем приложении, размещение его в делете приложения может быть чрезмерным.

+0

Я бы сказал, что хотя это быстрый и грязный способ передачи данных между видами, это не очень хорошая практика. Он объединяет контроллеры представлений и делает приложение сложным для поддержания и масштабирования. – TechZen

+0

Он очень явно не объединяет ничего вместе. Где сцепление? –

+0

+1 для NSNotifications и делегатов – Anurag

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