2013-05-30 4 views
0

У меня есть разные xib-файлы с прикрепленным к ним NSViewController. (Скриншот ниже)Цель c: Как переключить NSView нажатием кнопки

enter image description here

Один из XIb файла под названием StartMenuViewController, который имеет кнопку. Я хочу нажать эту кнопку и изменить вид на DetectingUSBViewController. (Снимок экрана ниже) IBAction этой кнопки находится в файле StartMenuViewController.m.

enter image description here

И я использую AppController.m контролировать свой основной вид XIb. (NSWindow + NSView) (Скриншот ниже) enter image description here

При запуске приложения, я пытаюсь инициализировать кулак StartMenuViewController по делая следующее в моем файле AppController.m.

-(void)awakeFromNib{ 
      [self initialize]; 
    } 

    -(void) initialize 
    { 
      @autoreleasepool { 
      //mainViewController is a NSViewController and _mainView is a NSView which connect with Custom View in main xib 
       self.mainViewController = [[[StartMenuViewController alloc]initWithNibName:StartMenuView bundle:nil]autorelease]; 
     [_mainView addSubview:[_mainViewController view]]; 
     } 
    } 

Он отлично работает, и она будет показывать StartMenuViewController.xib на окно на первом, но я не знаю, как изменить вид после нажатия на кнопку (FIND USB Drive). Я хочу, чтобы текущий вид изменился на DetectingUSBViewController.xib. Я новичок в разработке Mac.

Спасибо!

ответ

0

Простейшее возможный путь, если вы связали свою кнопку USB должным образом, выполните следующие действия:

- (IBAction)usbButton:(UIButton *)sender { 

    DetectingUSBViewController *second = [[DetectingUSBViewController alloc] initWithNibName:@"DetectingUSBView" bundle:nil]; 
    [self presentViewController:second animated:YES completion:nil]; 

} 
+0

Является ли это для макинтош или ИОС? –

+0

Это для iOS. Не уверен, что это применимо и к Mac. – kgdesouz

+0

Нет, он не работает на osx, поскольку нет метода currentViewController –

0

нагрузку, DetectingUSBViewController в startMenuViewController, как DetectingUSBViewController* v1 = [[ViewCont1 alloc] initWithNibName:@"ViewCont1" bundle:nil]; теперь добавить или заменить вид, как [v1 view] ввиду, где вы хотите добавить/заменить.

0
  1. Вы должны подключить свою кнопку, чтобы послать IBAction
  2. Вам нужен «Вид для DetectingUSBViewController.xib» => один из способов (IOS), как это использовать ViewController. Подкласс NSViewController и затем назначить init a DetectingUSBViewController
  3. Добавить представление. Не представляйте ВК (как нет такой вещи в OSX)

//button click action 
- (IBAction)usbButton:(UIButton *)sender { 
    //! Retain the VC 
    Self.detectingUSBViewController = [[DetectingUSBViewController alloc] initWithNibName:@"DetectingUSBView" bundle:nil]; 

    //add the view 
    [_mainView addSubview:[_detectingUSBViewController view]]; 

}

+0

_mainView находится в классе AppController, а не в классе StartViewController. Как вызвать здесь _mainView? Спасибо –

+0

Self.view.window –

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