我使用以下代码获取到目前为止导航的视图控制器的名称,
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];
NSLog(@"%@",navigationArray);
但我在故事板中使用此方法这是不起作用可以任何人帮助解决这个
答案 0 :(得分:2)
使用NSStringFromClass()。它将类的名称返回为string
。
如果要获取某些视图控制器名称,请执行
NSString *viewName = NSStringFromClass([yourviewControllerName class]);
如果要获取当前视图控制器,请执行
NSString *viewName = NSStringFromClass([self class]);
获取以前的Viewcontrollers
您可以使用UINavigationController
' viewControllers
属性:
@property(非原子,复制)NSArray * viewControllers
NSArray * allViewController = self.navigationController.viewControllers;
另一种选择
获取导航使用中可用的viewcontrollers的数量,如
NSInteger totalCount = self.navigationController.viewControllers.count;
<强>更新强>
UIViewController *allViewController = self.navigationController.viewControllers[totalCount - 2];
Class previousVCClass = [allViewController class];
NSString *className = NSStringFromClass(previousVCClass);
答案 1 :(得分:2)
您必须迭代导航堆栈并使用Anbu的解决方案来检索其类名:
NSMutableArray* viewControllersNames = [[NSMutableArray alloc] init];
for(UIViewController *vc in self.navigationController.viewControllers)
{
NSString *vcName = NSStringFromClass([vc class]);
[viewControllersNames addObject:vcName];
}
在属性self.navigationController.viewControllers
中,存储了尚未弹出的所有viewcontroller。在这里,我们迭代它们并在数组中添加它们的类名。您的第一个ViewController
将位于0
数组索引处,而您的最后一个(当前显示的视图控制器)将位于count-1
索引处。
只有通过导航控制器展示viewControllers时,此解决方案才有效。如果您使用模态演示文稿,它将无法正常工作。由于您的帖子给人的印象是您正在使用导航控制器,并且您说您正在这样做,因此解决方案也适用于导航控制器方法。
答案 2 :(得分:0)
这可以帮助您解决问题
在Storyboard上选择每个视图控制器并转到类检查器。然后设置每个视图控制器唯一的故事板标识符。
您可以访问任何视图控制器的实例。
id controller = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ControllerIdentifier"];
另一种方式
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];
id controller1 = [navigationArray objectAtIndex: 0];
id controller1 = [navigationArray objectAtIndex: 1];
....