我目前正在编写一个包含多个用户的应用。 我想在故事板中使用相同的“配置文件”视图来显示所有用户的信息。
计划是设置“个人资料”视图的标题,然后推送它。
- (void) pushGeneralProfileViewFrom:(UIViewController *)target usernameAsTitleOfView:(NSString *)title {
UIViewController *myView = [target.storyboard instantiateViewControllerWithIdentifier:@"GeneralProfileView"]; // created in storyboard, Feed View
myView.title = title;
[target.navigationController pushViewController:myView animated:YES];
}
这很有效。但是,“配置文件”视图还具有将其引导到故事板中其他视图的按钮。这些视图还显示相关用户的特定信息。
我打算使用backBarButtonItem的名称来了解我需要显示信息的用户。虽然我可以在模拟器中看到带有用户名的后退按钮,但我无法获得self.navigationController.navigationItem.backBarButtonItem.title
或self.navigationItem.backBarButtonItem.title
。两者都返回null
。
我做错了什么? 另外,我觉得这不是处理这类事情的最佳做法。我搜索过网络,到目前为止还没有看到更好的方法将值传递给我正在推动的视图。建议?
谢谢。
答案 0 :(得分:4)
当您的视图控制器在导航控制器界面中可见时,您看到的backBarButtonItem
不是此视图控制器的backBarButtonItem
。它是第二个视图控制器的backBarButtonItem
,是堆栈中这个控制器后面的那个。
所以你想要的是这个:
UIInteger c = [self.navigationController.viewControllers count];
UIViewController* vc2 = [self.navigationController.viewControllers objectAtIndex:c-2];
现在获取 视图控制器backBarButtonItem
的{{1}}。或者只是得到它navigationItem
,如果它们是相同的。