2013-02-28 122 views
0

我视图控制器如下获取当前视图控制器名称在父视图控制器

父视图控制器

@interface Parent : UIViewController 
{ 
} 

子视图控制器

@interface Child : Parent 
{ 
} 

现在我想在父视图 - 控制当前视图控制器的名字,我已经搜索,但得到简单的线索是。

如果它是一个基于导航应用,你可以得到当前视图控制器,

UIViewController *currentVC = self.navigationController.visibleViewController; 

但什么是当期的过程中父视图控制器访问当前视图 - 控制名称。

+0

你是什么意思“视图 - 控制的名字”?你的意思是类名(例如'Child'或'Parent')?你的意思是视图控制器的标题(来自'title'属性)? – rmaddy 2013-02-28 05:52:08

+0

由父viewController你只是指父类..? – 2013-02-28 06:20:20

+0

@rmaddy我正试图在父类 – 2013-02-28 08:35:01

回答

1

试试下面这个

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

代码可以提供帮助。我还没有尝试过,但让我知道它的工作

写在父类

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

以下方法以下几行,你需要访问当前视图 - 控制名称

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

希望这帖子有帮助

+0

这是真棒代码!它适用于我完美,谢谢! – Genevios 2015-03-23 23:07:12

1

我已经创立了答案,

在父视图控制器:

- (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; 
} 

当我们调用[超级viewDidLoad中]从儿童的ViewController然后父视图控制器被初始化,我在这里取当前视图控制器的类名。所以在我的应用程序中,我不想在每个视图控制器中编写这行代码,而是写在父视图控制器中。

注:此为导航的工作只是根据应用程序,因为我们是从navigationController

获取当前visibleViewController
相关问题