Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 返回按钮未出现在UINavigationController上-can';t调试_Objective C_Uinavigationcontroller_Back Button_Uinavigationitem - Fatal编程技术网

Objective c 返回按钮未出现在UINavigationController上-can';t调试

Objective c 返回按钮未出现在UINavigationController上-can';t调试,objective-c,uinavigationcontroller,back-button,uinavigationitem,Objective C,Uinavigationcontroller,Back Button,Uinavigationitem,导航控制器上的“后退”按钮有时不出现。请注意,有时确实如此,所以在其他地方的som代码中可能还有其他的事情发生,但我已经尝试用我所能想到的各种方式调试它,但似乎什么都不起作用 推送视图控制器的代码如下(相当标准): 为了调试这个问题,我将以下代码放在ViewWillDisplay和ViewDidDisplay中的CommentsTableViewController中(除了我只注册一次作为观察者外): 所有这些似乎都无济于事。将断点放进去,似乎层次结构中我上方的视图控制器有一个标题(@“策略”)

导航控制器上的“后退”按钮有时不出现。请注意,有时确实如此,所以在其他地方的som代码中可能还有其他的事情发生,但我已经尝试用我所能想到的各种方式调试它,但似乎什么都不起作用

推送视图控制器的代码如下(相当标准):

为了调试这个问题,我将以下代码放在ViewWillDisplay和ViewDidDisplay中的CommentsTableViewController中(除了我只注册一次作为观察者外):

所有这些似乎都无济于事。将断点放进去,似乎层次结构中我上方的视图控制器有一个标题(@“策略”),hidesBackButton已经不是了。BackbarButtonim属性为nil,并且始终为nil,尽管我认为这是预期的行为,即使您确实有BackbarButtonim

编辑:在父控制器中,我首先将hidesBackBackButton设置为“是”,然后(在按下下一个控制器之前)将其设置回“否”。删除这些行时,新的视图控制器会有一个“后退”按钮。为什么一个视图控制器的导航项会影响下一个视图控制器的导航项


欢迎提出任何建议或想法。非常感谢

也许您可以通过调试更好地解决这个问题。您假设引导您返回的按钮是:

self.navigationItem.backBarButtonItem.title = @"Tactic";
但这是零,如果您想找到该按钮,请查看导航控制器的导航栏:

NSLog(@"%@",self.navigationController.navigationBar.topItem);
我看不出代码不起作用的原因,您也不需要这样做:

self.navigationItem.hidesBackButton = NO;  
请尝试以下方法:

self.navigationController.navigationBar.topItem.hidesBackButton = NO;
不管怎么说,这对我来说很有效,即使我没有把它设为“否”


如果这不能解决问题,它至少应该有助于调试它,如果您在评论中仍然有这个问题,那么请发表评论,并说明NSLog()打印了什么

也许您可以通过调试更好地解决这个问题。您假设引导您返回的按钮是:

self.navigationItem.backBarButtonItem.title = @"Tactic";
但这是零,如果您想找到该按钮,请查看导航控制器的导航栏:

NSLog(@"%@",self.navigationController.navigationBar.topItem);
我看不出代码不起作用的原因,您也不需要这样做:

self.navigationItem.hidesBackButton = NO;  
请尝试以下方法:

self.navigationController.navigationBar.topItem.hidesBackButton = NO;
不管怎么说,这对我来说很有效,即使我没有把它设为“否”


如果这不能解决问题,它至少应该有助于调试它,如果您在评论中仍然有这个问题,那么请发表评论,并说明NSLog()打印了什么

好的。我已经解决了。我不知道这有什么不同,但确实如此

在调用hidesBackButton的同一个运行循环中,我还调用了:

[self.view addSubview:self.chessBoardViewController.view];
这条线似乎不知怎么搞砸了导航栏。如果我去掉这条线,它会工作得很好。因此,我找到的解决方案是将这一行替换为:

[self.view performSelector:@selector(addSubview:) withObject:self.chessBoardViewController.view afterDelay:0];

我不知道为什么会这样,所以如果有人对可能发生的事情有任何见解,请发表评论。

好的。我已经解决了。我不知道这有什么不同,但确实如此

在调用hidesBackButton的同一个运行循环中,我还调用了:

[self.view addSubview:self.chessBoardViewController.view];
这条线似乎不知怎么搞砸了导航栏。如果我去掉这条线,它会工作得很好。因此,我找到的解决方案是将这一行替换为:

[self.view performSelector:@selector(addSubview:) withObject:self.chessBoardViewController.view afterDelay:0];

我不知道为什么会这样,所以如果有人对可能发生的事情有任何见解,请发表评论。

导航控制器是窗口的根视图控制器吗?@RamyAlZuhouri是的。是的。我还从另一个StackOverflow问题中了解到,在按下新的视图控制器之前,应该设置hidesBackBackButton。然而,我在应用程序的许多其他地方都这样做,并且没有任何问题。如果是这种情况,还有其他方法吗?导航控制器是窗口的根视图控制器吗?@RamyAlZuhouri是。是的。我还从另一个StackOverflow问题中了解到,在按下新的视图控制器之前,应该设置hidesBackBackButton。然而,我在应用程序的许多其他地方都这样做,并且没有任何问题。如果是这样的话,还有别的方法吗?是的,你是对的。我不认为self.navigationItem.backBarButtonItem.title=@“战术”;有什么区别吗。我只是把它包括进来以突出我已经尝试过的内容。我打印了self.navigationController.navigationBar.topItem,它与self.navigationItem是同一个对象,因为两个NSLog都是“”,经过进一步的调查,似乎是我移除后退按钮然后将其放回的问题。如果我去掉这些线,它工作得很好。因此,也许可以用一种新的方式来表达我的问题:如何正确地暂时隐藏UIViewController的后退按钮?好的。请记下最后的评论。我创建了一个新项目,将hidesBackButton设置为YES和NO似乎效果不错。不知道为什么它在我当前的project.Btw中不起作用。我刚刚在线程上做了另一个传递,这都在主线程上。是的,你说得对。我不认为self.navigationItem.backBarButtonItem.title=@“战术”;有什么区别吗。我只是把它包括进来以突出我已经尝试过的内容。我打印了self.navigationController.navigationBar.topItem,它与self.navigationItem是同一个对象,因为两个NSLog都是“”,经过进一步的调查,似乎是我移除后退按钮然后将其放回的问题。如果我去掉这些线,它工作得很好。因此,也许可以用一种新的方式来表达我的问题:如何正确地暂时隐藏UIViewController的后退按钮?好的。请记下最后的评论。我创建了一个新项目,将hidesBackButton设置为YES和NO似乎效果不错。不知道为什么它在我当前的project.Btw中不起作用。我只是在线程上做了另一个传递,这都是在主线程上。我应该看到整个代码,以了解为什么这样做有效。如果这对我来说很重要的话