Tag: uinavigationcontroller

如何访问UINavigationController中的堆栈

viewControllers 当前在导航堆栈上的视图控制器。 @property(nonatomic, copy) NSArray * viewControllers 讨论 根视图控制器位于数组的索引0处,后视图控制器位于索引n-2,顶部控制器位于索引n-1,其中n是数组中的项目数。 将一个新的视图控制器数组分配给该属性相当于将animated参数设置为NO的setViewControllers:animated:方法。 我很困惑如何访问堆栈我有三个视图在导航控制器 – 根视图控制器,stitesting位置,sti地图。 我怎样才能访问堆栈?

以自定义模式呈现UINavigationController

我试图从UINavigationController呈现一个UINavigationController。 我正在使用新的iOS 7 transitioningDelegate的东西,它的工作很好….除了导航栏开始高,然后在animation结束时收缩。 我假设它缩小,因为酒吧不接触屏幕的顶部,但为什么它开始高? 我能阻止这个吗? 这是animation代码: – (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext { UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView* containerView = [transitionContext containerView]; if (toViewController.isBeingPresented) { [self presentModalView:toViewController.view fromView:fromViewController.view inContainerView:containerView withTransitionContext:transitionContext]; } else { [self dismissModalView:fromViewController.view fromView:toViewController.view withTransitionContext:transitionContext]; } } – (void)presentModalView:(UIView*)modalView fromView:(UIView*)presentationView inContainerView:(UIView*)containerView withTransitionContext:(id<UIViewControllerContextTransitioning>)transitionContext { [containerView addSubview:modalView]; presentationView.userInteractionEnabled = NO; modalView.layer.cornerRadius […]

翻转转换uinavigationcontroller推

我使用下面的代码在导航堆栈中推UIViewController [UIView animateWithDuration:0.75 animations:^{ [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [self.navigationController pushViewController:ViewController animated:NO]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; }]; 现在当我按下后,我想要它做同样的animation,但它不工作。 任何想法为什么? 在ViewController.m中 [UIView animateWithDuration:0.75 animations:^{ [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [self.navigationController popToRootViewControllerAnimated:NO]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; }];

UINavigationController:在每次转换后显示embedded的视图控制器不同的方向?

这是StackOverflow常见的问题,但没有其他解决scheme的工作。 许多也是几年前写的。 这里是一些考虑的职位: UINavigationController中的viewControllers有可能有不同的方向吗? 在UINavigationController中只支持一个视图的横向 UINavigationController中的viewControllers有可能有不同的方向吗? 为什么使用UINavigationController时无法强制横向? 如何强制在iOS 8视图控制器方向? 我们在UINavigationController中embedded了几个视图控制器:A,B,C,D。 A,B使用肖像。 C,D使用景观。 A是根控制器。 假设B被推到A.这是因为B是肖像。 但是,当C被推到B上时,由于类文档状态,屏幕不会旋转: 通常,系统只在窗口的根视图控制器或呈现的视图控制器上调用此方法以填充整个屏幕; 子视图控制器使用父视图控制器为其提供的窗口部分,不再直接参与关于支持哪些旋转的决定。 因此,在自定义的UINavigationController中重写supportedInterfaceOrientations并不会有帮助,因为在embedded式控制器的转换中没有查询它。 实际上,我们需要一种方式来强制转型时的方向转变,但似乎没有支持的方法。 下面是我们如何覆盖UINavigationController(扩展仅用于debugging目的,因为明显的扩展不应该用于覆盖): extension UINavigationController { override open var shouldAutorotate: Bool { return true } override open var supportedInterfaceOrientations : UIInterfaceOrientationMask { return visibleViewController?.supportedInterfaceOrientations ?? UIInterfaceOrientationMask.landscapeRight } } 在embedded式视图控制器中,我们尝试设置像这样的方向: override var shouldAutorotate: Bool { return true } override […]

iOS 6:将视图控制器推入导航控制器堆栈时如何强制更改方向

我觉得这个问题现在应该已经有一百万次了,但是我还是找不到答案。 这是我的层次结构:UINavigationController – > UIViewController 1 – >(push) – > UIViewController 2 UINavigationController:支持所有可能的方向UIViewController 1:仅支持纵向UIViewController 2:仅支持横向 我怎样才能lockingUIViewController 1到肖像只有同时lockingUIViewController 2到景观只? 这甚至有可能吗? 到目前为止,我所看到的是UIViewController 2总是采用UIViewController 1的方向。 请注意,这仅适用于iOS 6。 谢谢!

当使用UINavigationController时,我的控制器的viewWillAppear或viewDidAppear方法不会被调用

这是球场。 我有一个UIViewController子类,它在viewWillAppear和viewDidAppear方法中做了一些事情。 我想在UINavigationViewController中嵌套这个视图控制器。 根据视图层次的复杂性,我的控制器的两个方法viewWillAppear和viewDidAppear可能不会被调用。 我应该怎么做才能确保这两个方法总是被调用,而不pipe我的视图层次? “复杂”视图层次结构的示例: UIViewController subclass containing a UITabBarController |_ Each tab containing a UINavigationViewController |_ Each UINavigationController controller containing a custom UIViewController 当您将TabBarController作为模式视图呈现时,将调用TabBarController的viewWillAppear和viewDidAppear方法,但不嵌套在UINavigationViewControllers下嵌套的自定义UIViewController。

pushViewController没有navigationcontroller

我有一个UITableViewControllertypes的类。 这个类有一个UINavigationBartypes的成员,用于添加表视图的编辑button。 使用这种方法调用是无效的。 [self.navigationController pushViewController:controller]; 在UINavigationController中select一个没有包装我的UITableViewCOntroller的表格行之后,如何将详细信息视图推送到视图上?

select标签时popup到根视图

我一直在遇到一些我认为可能很容易的麻烦。 我有一个表在我的根视图控制器,当select一个行我推新视图,从那里我去另一个选项卡。 我的问题是如何确保一旦用户点击第一个标签导航控制器将popup到根?

ios 5将导航控制器中后退button的背景更改为透明

我已经定制了导航控制器标题栏的背景图像,但我真的很努力将后退button的背景颜色更改为透明,以便它与下面的绿色标题栏相匹配。 我对iOS开发相当新颖。 任何人都可以build议可以做什么? 以下是我用来更改导航控制器标题栏的代码,以防万一: – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) { UIImage *image = [UIImage imageNamed:@"greenbar.png"]; [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; // [[UIBarButtonItem appearance] setBackButtonBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; } //change back button image } 编辑 :经过一些研究,我设法得到我想要的。 这是更改后退button的背景图片的代码: UIImage *image1 = [UIImage imageNamed:@"back-bt.png"]; […]

hidesBottomBarWhenPressed在iOS 7中被忽略

这个代码运行良好,直到iOS 7发布。 我分配一个UIViewController ,与hidesBottomBarWhenPushed为YES ,作为UINavigationController的rootViewController 。 但TabBar正在显示。 以下是相关的代码: Login *lv = [[Login alloc] init]; lv.HowToUseShows = showHowToUse; lv.hidesBottomBarWhenPushed = YES; UINavigationController *BokShelfNav = [[UINavigationController alloc] initWithRootViewController:lv]; //… UITabBarController *tbController = [[UITabBarController alloc] init]; tbController.viewControllers = @[BokShelfNav,…]; 任何人有类似的问题?