Объявление объектов из одного xib в другой в Xcode?

У меня есть проект с переключателем из xib отдельно от основного ViewController. Я пытаюсь сделать так, чтобы при переключении UISwitch в положение OFF кнопка в ViewController была скрыта. Я попытался объявить AppDelegate в файле xib .m, но все равно не повезло. Мой код:

- (void)viewDidAppear:(BOOL)animated {

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

}

Что я делаю неправильно? я пытаюсь сделать

if (switch.on) {
     myButton.hidden = YES;
   } else {
     myButton.hidden = NO;
}

Я также сделал это в файле .m второго xib (тот, у которого нет основного ViewController)

#import "AppDelegate.h"
#import "ViewController.h"

Но все равно НИЧЕГО! В общем, я просто пытаюсь объявить кнопку в одном xib из другого. ЭТО ОНО. ПОЖАЛУЙСТА, ПОМОГИТЕ Спасибо!


person Big Box Developer    schedule 11.05.2012    source источник
comment
второй xib на той же раскадровке? например, оба контроллера представления отображаются на одном и том же экране раскадровки, или это отдельный файл пера, который не отображается на раскадровке вместе с контроллером представления?   -  person Pochi    schedule 11.05.2012
comment
@LuisOscar Я не использую раскадровку. В моей папке проекта есть AppDelegate.h, AppDelegate.m, ViewController.xib, ViewnController.h и ViewController.m. В моей 2-й папке для моего 2-го xib (я назвал его settings) settings.h, settings.m и settings.xib, что мне делать.   -  person Big Box Developer    schedule 11.05.2012


Ответы (1)


Во-первых, см. эту информацию о передаче данных между контроллерами представления и это о UISwitch.

Как только вы это поймете, настройте свой код примерно так:

Фирствиевконтроллер.h:

@interface FirstViewController : UIViewController
{
  ...
}
@property IBOutlet UISwitch *theSwitch;

- (IBAction)switchToggled;

@end

Второй виевконтроллер.h:

@interface SecondViewController : UIViewController
{
  ...
}
@property IBOutlet UIButton *button;
@property UIViewController *theFirstViewController;

@end

Убедитесь, что theFirstViewController каким-то образом устанавливается -- опять же, см. передача данных между контроллерами представления. Затем в switchToggled вы можете сделать это:

- (IBAction)switchToggled
{
  theFirstViewController.button.hidden = YES;
}

Важно помнить, что ваши контроллеры представления не знают друг о друге волшебным образом. Даже если вы сделаете что-то с AppDelegate, как вы пытались. SecondViewController нужна ссылка на FirstViewController.

person jlstrecker    schedule 11.05.2012