我有视图控制器如下
父视图控制器
@interface Parent : UIViewController
{
}
子视图控制器
@interface Child : Parent
{
}
现在我想在父视图控制器中使用当前的viewcontroller名称,我已经搜索了但是得到了简单的线索。
如果它是基于导航的应用程序,您可以通过
获取当前视图控制器UIViewController *currentVC = self.navigationController.visibleViewController;
但是在Parent Viewcontroller中访问当前viewcontroller名称的当前过程是什么。
答案 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