标签: uinavigationcontroller

在iOS 7上,如果控制器最终包含在标签栏控制器中,则使用工具栏推送控制器会留下无法使用的空间

在我的iOS应用程序中,我的窗口的rootViewController是一个标签栏控制器,其层次结构如下:

  • 的UITabBarController
    • UINavigationController 1
      • FirstContentController
    • UINavigationController 2
      • ...
    • UINavigationController 3
      • ...
    • ...

当用户点击某一行时FirstContentController,一个实例SecondController将被推送到其导航控制器上.SecondContentControllerhidesBottomBarWhenPushedYES在其init方法和套self.navigationController.toolbarHiddenNOviewWillAppear:.

在iOS 6中,用户将挖掘该行FirstControllerSecondController会得到推到导航控制器.因为它已hidesBottomBarWhenPushed设置,它将隐藏标签栏,并且在转换动画完成时,SecondController它将在屏幕上显示其工具栏.

但是,在iOS 7下进行测试时,其hidesBottomBarWhenPushed行为似乎已发生变化.我现在看到的是:

  • 标签栏隐藏,如预期的那样
  • 按预期显示工具栏
  • 在工具栏和内容视图之间出现一个无法使用的空间,正好有49像素高(标签栏的高度)

差距完全无法使用 - 它不响应触摸,如果我clipsToBounds在主视图上设置为YES,则没有任何内容.经过大量的调试和检查子视图层次结构后,看起来iOS的自动调整机制将视图控制器的视图调整为高度411(在iPhone 5上).应该是460到达工具栏,但布局系统似乎包括一个"鬼"49像素高的标签栏.

如果视图控制器的标签栏控制器为其父容器,则只会出现此问题.

在iOS 7上,当按下新控制器时,如何使标签栏消失并且工具栏无缝滑动到位,并且视图还占用导航项和工具栏之间的整个空间?

UPDATE

经过进一步调查后,只有在SecondController edgesForExtendedLayout设置为时才会发生这种情况UIRectEdgeNone.但是,除非我将该属性设置为,否则UIRectEdgeNone视图的框架太长并且在工具栏下方延伸,在该工具栏中无法看到或与之交互.

iphone objective-c uinavigationcontroller ios ios7

39
推荐指数
4
解决办法
2万
查看次数

如何在UINavigationController中返回一个视图?

有没有办法在堆栈中返回一个视图UINavigationController?或者具有特定标题的视图?

cocoa-touch objective-c uinavigationcontroller

38
推荐指数
2
解决办法
2万
查看次数

恢复iOS7之前的UINavigationController pushViewController动画

所以.刚刚开始将我的IOS代码转换为IOS7,并遇到了一些问题.

我有一个UINavigationController,它有子ViewControllers,我pushViewController用来显示下一个视图.要创建带有一组图像的视差动画,如果自定义UINavigationController动画一组UIImageViews和我的孩子ViewControllers都具有self.backgroundColor = [UIColor clearColor]透明度.

由于iOS7,UINavController动画它的子vc的方式,通过部分移动当前视图控制器更新,并在顶部推动新的视图控制器,我的视差动画看起来很废话.我看到之前的VC移动了一点然后消失了.有什么办法可以恢复以前的UINavigationControllerpushViewController动画吗?我似乎无法在代码中找到它.

WelcomeLoginViewController* welcomeLoginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WelcomeLogin"];
    [self.navigationController pushViewController:welcomeLoginViewController animated:YES];    
Run Code Online (Sandbox Code Playgroud)

甚至尝试使用:

    [UIView animateWithDuration:0.75
                     animations:^{
                         [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                         [self.navigationController pushViewController:welcomeLoginViewController animated:NO];
                         [UIView setAnimationTransition:<specific_animation_form> forView:self.navigationController.view cache:NO];
                     }];
Run Code Online (Sandbox Code Playgroud)

有没有人有任何线索?

animation objective-c uinavigationcontroller pushviewcontroller ios7

38
推荐指数
5
解决办法
2万
查看次数

在Swift中的Nav Controller中弹出2个视图控制器

我已经找到了许多使用Objective-C 回弹2 UIViewControllersUINavigationController方法,但是当我尝试将其切换到Swift时它似乎没有用.

回弹的最佳方法是UIViewController什么?任何指导将不胜感激谢谢

uinavigationcontroller ios

38
推荐指数
5
解决办法
3万
查看次数

在Xcode的导航栏控制器的标题下添加字幕

所以我想在导航控制器的导航栏中添加标题下的"副标题".

到目前为止,我查找的大部分内容都要我使用CGRect.我不知道那是什么,这听起来像是想要我创建一个全新的视图而不是我想做的事情.

我的问题是,有一种点方法可以轻松添加字幕视图吗?

我发现的最接近的事情是在堆栈溢出时发布,这是链接:

在导航栏中创建一个副标题

显然去年这有效,但现在我得到错误,它在我的viewDidLoad ...

我试过这个:

self.navigationController?.navigationItem.prompt ="Subtitle Here"

这是唯一不会显示任何错误但仍然不起作用的东西.它实际上什么都不做.在运行时至少没有任何可见的东西.

另一方面,swift是首选.谢谢!

uinavigationbar uinavigationcontroller uinavigationitem swift

38
推荐指数
6
解决办法
2万
查看次数

将工具栏添加到UITableViewController

将UIToolBar添加到UITableViewController的最简单方法是什么?我依赖于编辑功能,所以我无法轻松地将UITableViewController更改为UIViewController.

iphone cocoa-touch uitableview uiviewcontroller uinavigationcontroller

37
推荐指数
3
解决办法
3万
查看次数

在同一操作中弹出和推送视图控制器

可以从导航堆栈中弹出一个视图,然后再将其直接推到它上面吗?

我正在尝试为这一部分实现一个平面层次结构,并希望有一个分段控制器,但我不能让分段控制器看起来像我想要的任何东西,因此我为什么要尝试使用导航控制器.

单击按钮时,我执行了以下代码:

[[self navigationController] popViewControllerAnimated:YES];
        MapsViewController *aViewController = [[MapsViewController alloc]
                                               initWithNibName:@"MapsViewController" bundle:nil];
[self.navigationController pushViewController:aViewController animated:NO];
[aViewController release];
Run Code Online (Sandbox Code Playgroud)

它突然出现,但没有任何推动的迹象!任何帮助,将不胜感激.

uinavigationcontroller popviewcontroller pushviewcontroller ios

37
推荐指数
5
解决办法
4万
查看次数

导航返回上一个视图控制器

我有一个UIView->UICollectionView->UICollectionViewCell.我试图以编程方式返回,但这些都不起作用.代码确实调用了.我正在使用StoryBoard.

- (void) goBack:(NSNotification *) notification {
      // [self.navigationController popViewControllerAnimated:YES];
     //  [self dismissViewControllerAnimated:YES completion:nil];
      [self.navigationController popToRootViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uinavigationcontroller ios

37
推荐指数
3
解决办法
7万
查看次数

在Swift上弹出ViewController

我需要从导航控制器弹出一个UIViewController.

只需编写这行代码,但要做一个例外;

在展开Optional值时意外地发现了nil

self.navigationController.popViewControllerAnimated(true)
Run Code Online (Sandbox Code Playgroud)

如果我使导航控制器可选,此行不起作用,不弹出

self.navigationController?.popViewControllerAnimated(true)
Run Code Online (Sandbox Code Playgroud)

怎么解决?

uinavigationcontroller ios swift

37
推荐指数
4
解决办法
6万
查看次数

使用UISearchController时,iOS 13 UIBarButtonItem不可单击且UINavigationBars重叠

我有一个导航栏,其中包含一些UIBarButtonItem按钮和类似的UISearchBar挂钩

var searchController: UISearchController!

override func viewDidLoad() {
    super.viewDidLoad()

    title = "Test"

    tableView.delegate = self
    tableView.dataSource = self

    searchController = UISearchController(searchResultsController: nil)
    navigationItem.searchController = searchController

    // This leads to the bug
    searchController.hidesNavigationBarDuringPresentation = false

    navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(leftTapped))
    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(rightTapped))
}
Run Code Online (Sandbox Code Playgroud)

场景:我点击搜索栏,然后点击取消。

  • 问题1:除非我触摸屏幕的最外面的像素,否则条形按钮对触摸没有反应(仅在模拟器和鼠标单击时才可能)。

  • 问题2:当我按下另一个视图控制器时,导航项重叠

在此处输入图片说明

当我使用hidesNavigationBarDuringPresentation = true它时,它的工作就像预期的那样。


该问题出现在使用Xcode 11.0和11.1的带槽口和非带槽口的iPhone iOS 13.0和13.1上。

这是整个测试项目:https : //github.com/fl034/HidesNavigationBarDuringPresentationTest


我已经提起雷达(您也应该提起诉讼),但是也许你们中的有些人已经找到了解决方法?


更新1:iOS …

uinavigationcontroller ios uisearchcontroller ios13

36
推荐指数
2
解决办法
1504
查看次数