2013-02-28 118 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
相關問題