在父ViewController中获取当前ViewController名称

时间:2013-02-28 05:48:14

标签: iphone ios uiviewcontroller viewcontroller

我有视图控制器如下

父视图控制器

@interface Parent : UIViewController
{
} 

子视图控制器

@interface Child : Parent
{
}

现在我想在父视图控制器中使用当前的viewcontroller名称,我已经搜索了但是得到了简单的线索。

如果它是基于导航的应用程序,您可以通过

获取当前视图控制器
UIViewController *currentVC = self.navigationController.visibleViewController;

但是在Parent Viewcontroller中访问当前viewcontroller名称的当前过程是什么。

3 个答案:

答案 0 :(得分:1)

试试这个

    for(UIViewController * view in self.navigationController.viewControllers)
    {
        if([view isKindOfClass:[Child class]])
        {
           //child VC is displayed on screen
        }
    }

答案 1 :(得分:1)

以下代码可以提供帮助。我没试过,但让我知道它是否有效

在Parent类中编写以下方法

 -(void)getClassName:(NSString*)className{
   NSLog(className);
   //Your code here
 }

您需要访问当前viewcontroller名称的行

 [self getClassName:NSStringFromClass([self class])];

希望这篇文章有用

答案 2 :(得分:1)

我已经找到了答案,

父ViewController中的

- (void)viewDidLoad
{
    UIViewController *currentVC = self.navigationController.visibleViewController;
    NSLog(@"The Current Class : %@", [self getClassName:currentVC]);
}

- (NSString*) getClassName:(id) obj
{   
    const char* className = class_getName([obj class]);
    NSString *clsName = [@"" stringByAppendingFormat:@"%s",className];

    return clsName;
}

当我们从Child ViewController调用[super viewDidLoad]时,初始化了Parent ViewController,这里我将获取当前视图控制器的类名。所以在我的应用程序中,我不想在每个视图控制器中编写这行代码,而是在父视图控制器中编写。

注意:这项工作仅适用于基于导航的应用,因为我们从navigationController获取当前的visibleViewController