iOS 9 返回 barButtonItem 未显示在导航控制器上
iOS 9 back barButtonItem not showing on navigation controller
与 描述的问题类似,除了我的 TabBar
实际上显示 BackButton
而我的 NavigationBar
不是。在这个问题中,我为解决问题的答案提供了一个 link,因为 NavigationController 中有一个 NavigationController
,我没有,所以这是一个不同的问题。
我的storyboard
的基本流程是登录(UIView
) - TabBar
(UITabBarController
) - NavigationController
(UINavigationController
) - 实际可见屏幕 (UITableViewController
) - 出现问题的新 TableView
(UITableViewController
)。
在新的实际可见 screen
或 TableView
上,顶部的 NavigationBar
显示得很好,我可以单击 BackBarButton
应该的一般区域是,它将返回,但没有 BackBarButton
项目可见。
我试过改变颜色,在之前的ViewController
中分配它,确保它可见,等等。其中none显示了Back Button
。好像有但是没有显示出来
有什么想法吗?从另一个与我的问题相似的问题来看,这似乎是一个 iOS 9
特定的问题。
EDIT 通过查看 Debug View Hierarchy,我可以看出后退按钮实际上在那里,但它上面没有标签或后退箭头。 如何使背面标签可见?
编辑 2
这是视图控制器的 viewDidLoad
方法,应该出现后退按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationItem.backBarButtonItem setTintColor:[UIColor whiteColor]];
// Other unimportant stuff
}
我转至此视图控制器的方式是通过带有推送转场的情节提要。代码如下。
- (void)segueToUser: (UIButton*)button {
long row = button.tag;
PFObject *PFQuote = [_recent quoteAtIndex:(row-1)/2];
PFUser *u = [PFQuote objectForKey:@"creator"];
_send = u;
[self performSegueWithIdentifier:@"showUser" sender:self];
}
这是我的 prepareForSegue
在与 segueToUser
相同的文件中
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showUser"]) {
BRETTFUserTableViewController *bfutvc = [segue destinationViewController];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
bfutvc.us = _send;
}
}
这是我故事板的一部分的图片。
第一个 视图是 tabView
second 视图是 navView
第三个 视图是 tableView
第四个视图是tableView
由于似乎没有人找到解决方案,我将提供更多信息。通过深入挖掘调试视图层次结构,我发现了一些有关后退按钮的更多信息。我可以看到那里的后退箭头完好无损,旁边有一个 NSString
似乎是 nil
,我不知道为什么它是零,但这是我发现的。这是我找到的其他图片。
在你的
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
你已经写了一行代码
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
在上一行你设置了标题“”空字符串。
不要使用空字符串,而是使用要在 back-button 项目上显示的标题。 fr ex:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
检查它是否有帮助。
添加故事板图像,我如何将视图控制器嵌入到导航控制器中。
或者,如果您在应用中的任何位置放置了导航外观代码,那么也 post 该代码。
在你的 viewDidLoad 和 prepareForSegue 方法中你有这个:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
将导航控制器的默认后退按钮替换为没有标签的按钮。
您只需删除这两行即可获得默认的后退按钮。
我终于解决了这个问题。为此,我必须进入第一个 tableViewController
的导航栏并将后退按钮标题设置为 Back
,然后设置色调颜色(因为它默认为清除),现在它可以工作了。
与 TabBar
实际上显示 BackButton
而我的 NavigationBar
不是。在这个问题中,我为解决问题的答案提供了一个 link,因为 NavigationController 中有一个 NavigationController
,我没有,所以这是一个不同的问题。
我的storyboard
的基本流程是登录(UIView
) - TabBar
(UITabBarController
) - NavigationController
(UINavigationController
) - 实际可见屏幕 (UITableViewController
) - 出现问题的新 TableView
(UITableViewController
)。
在新的实际可见 screen
或 TableView
上,顶部的 NavigationBar
显示得很好,我可以单击 BackBarButton
应该的一般区域是,它将返回,但没有 BackBarButton
项目可见。
我试过改变颜色,在之前的ViewController
中分配它,确保它可见,等等。其中none显示了Back Button
。好像有但是没有显示出来
有什么想法吗?从另一个与我的问题相似的问题来看,这似乎是一个 iOS 9
特定的问题。
EDIT 通过查看 Debug View Hierarchy,我可以看出后退按钮实际上在那里,但它上面没有标签或后退箭头。 如何使背面标签可见?
编辑 2
这是视图控制器的 viewDidLoad
方法,应该出现后退按钮。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationItem.backBarButtonItem setTintColor:[UIColor whiteColor]];
// Other unimportant stuff
}
我转至此视图控制器的方式是通过带有推送转场的情节提要。代码如下。
- (void)segueToUser: (UIButton*)button {
long row = button.tag;
PFObject *PFQuote = [_recent quoteAtIndex:(row-1)/2];
PFUser *u = [PFQuote objectForKey:@"creator"];
_send = u;
[self performSegueWithIdentifier:@"showUser" sender:self];
}
这是我的 prepareForSegue
在与 segueToUser
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showUser"]) {
BRETTFUserTableViewController *bfutvc = [segue destinationViewController];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
bfutvc.us = _send;
}
}
这是我故事板的一部分的图片。
第一个 视图是 tabView
second 视图是 navView
第三个 视图是 tableView
第四个视图是tableView
由于似乎没有人找到解决方案,我将提供更多信息。通过深入挖掘调试视图层次结构,我发现了一些有关后退按钮的更多信息。我可以看到那里的后退箭头完好无损,旁边有一个 NSString
似乎是 nil
,我不知道为什么它是零,但这是我发现的。这是我找到的其他图片。
在你的
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
你已经写了一行代码
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
在上一行你设置了标题“”空字符串。
不要使用空字符串,而是使用要在 back-button 项目上显示的标题。 fr ex:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
检查它是否有帮助。
添加故事板图像,我如何将视图控制器嵌入到导航控制器中。
或者,如果您在应用中的任何位置放置了导航外观代码,那么也 post 该代码。
在你的 viewDidLoad 和 prepareForSegue 方法中你有这个:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
将导航控制器的默认后退按钮替换为没有标签的按钮。
您只需删除这两行即可获得默认的后退按钮。
我终于解决了这个问题。为此,我必须进入第一个 tableViewController
的导航栏并将后退按钮标题设置为 Back
,然后设置色调颜色(因为它默认为清除),现在它可以工作了。