2013-02-28 1 views
0

У меня есть вид контроллера следующимПолучение текущего ViewController Имя в Родитель ViewController

родительский вид контроллера

@interface Parent : UIViewController 
{ 
} 

вид ребенка Контроллер

@interface Child : Parent 
{ 
} 

Теперь я хочу, текущее имя ViewController в родительском ViewController, Я искал, но получил простую подсказку.

Если это навигационное приложение на базе, вы можете получить текущий контроллер представления по,

UIViewController *currentVC = self.navigationController.visibleViewController; 

Но что это currect процедура для доступа к текущему имени ViewController в Parent ViewController.

+0

Что вы имеете в виду под «ViewController именем»? Вы имеете в виду имя класса (например, 'Child' или' Parent')? Вы имеете в виду заголовок контроллера (из свойства 'title')? – rmaddy

+0

от родителя viewController, вы просто имеете в виду родительский класс ..? –

+0

@rmaddy Я пытаюсь взять имя класса текущего ViewController в родительском классе –

ответ

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 
} 

После строки, в которых необходимо получить доступ к текущему имени ViewController

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

Надежда это Сообщение было полезным

+0

Это потрясающий код! Это работает для меня отлично, спасибо! – Genevios

1

Я основал ответ,

в Parent 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; 
} 

Когда мы называем [супер viewDidLoad] от ребенка ViewController затем Родитель ViewController был инициализирован, здесь я беру имя класса текущего контроллера представления. Поэтому в моем приложении я не хочу писать эту строку кода в каждом контроллере представления, а не в Parent View Controller.

Примечание: Эта работа для навигации на основе приложения только, потому что мы получаем текущую visibleViewController от navigationController

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

  • Нет связанных вопросов^_^