【问题标题】:Popping View Controller causes Bar Button Item to disappear弹出视图控制器导致条形按钮项消失
【发布时间】:2015-08-06 05:32:58
【问题描述】:

我的应用中有两个 ViewControllers。第一个 ViewController (比如说,ViewControllerOne 有一个 Bar Button Item,它在 TableView 中有一个幻灯片 (与问题无关)。我在第二个 ViewController (比如 ViewControllerTwo 中禁用了 导航栏,并添加了自定义视图和按钮。我已经编写了在按钮的操作中弹出 ViewControllerTwo 的代码。但是一旦弹出,ViewControllerOne中的BarButtonItem就消失了。 这是我在 ViewControllerTwo

中编写的代码
[self.navigationController setNavigationBarHidden:YES animated:YES];

- (IBAction)backCustom:(id)sender 
{
   [self.navigationController popViewControllerAnimated:YES];
}

知道为什么 Bar Button Item 会因此消失吗?我确信这段代码是原因,因为当我删除它时,它使用默认的 NavigationBar 运行良好。但我需要为我的项目自定义一个

【问题讨论】:

    标签: ios objective-c uiviewcontroller


    【解决方案1】:

    在您的第一个 Viewcontroller 中添加以下行

    -(void)viewWillAppear:(BOOL)animated{
    
    [super viewWillAppear:animated];
    
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    }
    

    【讨论】:

    • 如果你想要导航栏,在每个视图控制器中处理这个
    • 为什么我在当前viewController的“隐藏”部分编码后,前一个ViewController的导航栏消失了?
    • viewWillAppear:animated 上的 (BOOL)animated 参数。更改选项卡时,它将以NO 出现,因为动画是即时的。另一方面,如果它被animated:YES 从导航堆栈中推送弹出,那么它将以YES 出现。虽然这看起来像一个 hack,但它是正确的方法:你不需要弄清楚谁是调用者,相反,专注于这样一个事实:如果你的视图控制器会显示动画,你有时间自己做动画,如果没有,就搞砸,立即显示(或在这种情况下,隐藏)所有内容。
    • 快速回答我从这里stackoverflow.com/questions/7107503/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多