检查当前的rootViewController是什么?

时间:2014-06-20 13:03:09

标签: ios objective-c uiviewcontroller

我想查看当前的rootViewController是什么。

我有一个侧面菜单viewController,它从屏幕左侧滑出,它显示4个按钮 - 每个指向不同的viewController。点击它们时,例如button1:

- (IBAction)button1Tapped:(id)sender {

    [self.sideMenuViewController setContentViewController:[[UINavigationController alloc] initWithRootViewController:[[myViewController1 alloc] init]]
                                                 animated:YES];
    [self.sideMenuViewController hideMenuViewController];
}

所以我试图这样做:

  1. 用户在myViewContollerX,并打开sideMenuViewController。
  2. sideMenuViewController上,buttonX为灰色,因为用户当前正在使用myViewControllerX
  3. 用户点按buttonYmyViewControllerY节目。
  4. sideMenuViewControllerbuttonY现在为灰色,因为用户当前在myViewControllerY
  5. 所以我需要检查当前的rootViewController是什么,我假设。我该怎么做?感谢。

3 个答案:

答案 0 :(得分:1)

不确定您正在使用哪个侧面板库,但也许您可以在点击按钮时对其进行样式设置。像这样:

- (IBAction)button1Tapped:(UIButton *)sender
{
  // .... set the center controller

  [self setButtonAsActive:sender];
}

- (void)setButtonAsActive:(UIButton *)activeButton
{
  for (UIButton *button in @[self.button1, self.button3, self.button3])
  {
    if (button == activeButton)
      // ... make it highlighted
    else
      // ... make it not highlighted
  }
}

答案 1 :(得分:1)

如何查看当前的rootViewController并在if statement

中使用它
// Get your current rootViewController
NSLog(@"My current rootViewController is: %@", [[[UIApplication sharedApplication].delegate.window.rootViewController class]);

// Use in an if statement
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
if ([rootViewController isKindOfClass:[MyViewController class]])
{
    NSLog(@"Your rootViewController is MyViewController!!");
}

答案 2 :(得分:0)

您正在使用设置器来设置contentViewController。只需使用吸气剂并阅读即可。

e.g。

UIVIewController *contentViewController = self.sideMenuViewController.contentViewController;

NSLog(@"ContentViewController class: %@", [contentViewController class]);

您可以使用以下方式检查其课程:

if([contentViewController isKindOfClass: [UINavigationController class]])
{
    // check nav root and disable button
}

注意:

听起来按下单击按钮并启用所有其他按钮会更容易,但我不确定您是否还需要此信息。