获取当前视图控制器名称在父视图控制器
问题描述:
我视图控制器如下获取当前视图控制器名称在父视图控制器
父视图控制器
@interface Parent : UIViewController
{
}
子视图控制器
@interface Child : Parent
{
}
现在我想在父视图 - 控制当前视图控制器的名字,我已经搜索,但得到简单的线索是。
如果它是一个基于导航应用,你可以得到当前视图控制器,
UIViewController *currentVC = self.navigationController.visibleViewController;
但什么是当期的过程中父视图控制器访问当前视图 - 控制名称。
答
试试下面这个
for(UIViewController * view in self.navigationController.viewControllers)
{
if([view isKindOfClass:[Child class]])
{
//child VC is displayed on screen
}
}
答
代码可以提供帮助。我还没有尝试过,但让我知道它的工作
写在父类
-(void)getClassName:(NSString*)className{
NSLog(className);
//Your code here
}
以下方法以下几行,你需要访问当前视图 - 控制名称
[self getClassName:NSStringFromClass([self class])];
希望这帖子有帮助
+0
这是真棒代码!它适用于我完美,谢谢! – Genevios 2015-03-23 23:07:12
答
我已经创立了答案,
在父视图控制器:
- (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
你是什么意思“视图 - 控制的名字”?你的意思是类名(例如'Child'或'Parent')?你的意思是视图控制器的标题(来自'title'属性)? – rmaddy 2013-02-28 05:52:08
由父viewController你只是指父类..? – 2013-02-28 06:20:20
@rmaddy我正试图在父类 – 2013-02-28 08:35:01