На самом деле вы не очень ясны. Первое, что вы можете попробовать, это описать, что вы сделали:
- как создаются ваши два взгляда?
Предположим, что ваши два представления созданы из двух разных файлов пера.
- к какому объекту вы хотите иметь доступ к вашей метке и переключателю?
Давайте предположим, что это контроллер представления. Для одного контроллера представления немного необычно управлять двумя представлениями из двух разных файлов пера, но в конце концов, почему бы и нет?
В любом случае, вы можете установить класс владельца для ваших двух файлов пера в качестве класса вашего контроллера представления. Затем в Интерфейсном Разработчике, с первого взгляда, вы можете привязать метку к выходному файлу владельца UILabel
. А в Интерфейсном Разработчике, из второго представления, вы можете привязать UISwitch
ко второму выходу владельца файла типа UISwitch
.
Но, возможно, ваши onRoff
методы на самом деле являются методами одного из ваших двух классов представления? Применима та же идея: вы можете установить владельца файла во втором файле пера в качестве класса представления первого представления, а затем привязать переключатель к выходу UISwitch
владельца файла.
Но, похоже, ваш дизайн стоит того, чтобы над ним работать ...
Редактировать: после вашего комментария, здесь немного больше ...
Проблема в том, что каждый из двух контроллеров представления контролирует свою страницу и не имеет оснований знать друг о друге. Итак, вам нужен объект среднего человека. Это может быть другой контроллер. Давайте использовать делегат приложения. Затем в методе IBAction
вашего SwitchViewController вы можете сделать что-то вроде:
- (IBAction) switchChangedValue:(UISwitch *) sender {
NSString *newLabelText = sender.isOn ? @"On" : @"Off";
self.labelViewController.label.text = newLabelText;
}
Теперь, как все узнают друг о друге? Сначала каждый контроллер представления проинформирует посредника. Вот это для SwitchViewController:
- (void) viewDidLoad
{
[super viewDidLoad];
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.switchViewController = self;
}
Во-вторых, делегату приложения нужно будет все координировать:
@interface MyAppDelegate : …
@property (nonatomic, retain) SwitchViewController *switchViewController;
@property (nonatomic, retain) LabelViewController *labelViewController;
@end
@implementation MyAppDelegate
@synthesize switchViewController = _switchViewController;
@synthesize labelViewController = _labelViewController;
- (void) setSwitchViewController:(SwitchViewController *) newSwitchController {
if (newSwitchController != _switchViewController) {
[_switchViewController release];
_switchViewController = [newSwitchController retain];
_switchViewController.labelViewController = _labelViewController;
if (_labelViewController)
_labelViewController.label.text = _switchViewController.switch.isOn ? @"On" : @"Off";
}
}
- (void) setLabelViewController:(LabelViewController *) newLabelController {
if (newLabelController != _labelViewController) {
[_labelViewController release];
_labelViewController = [newLabelController retain];
_labelViewController.switchViewController = _switchViewController;
if (_switchViewController)
_labelViewController.label.text = _switchViewController.switch.isOn ? @"On" : @"Off";
}
}
Я пропустил ряд деталей, но я надеюсь, что общая картина ясна.