Tag: uiviewcontroller

如何获得根视图控制器?

我需要一个根视图控制器的实例。 但是这个代码返回null: UIViewController *rootViewController = (UIViewController*)[[[UIApplication sharedApplication] keyWindow] rootViewController]; 任何想法为什么? 另外当我尝试获取控制器的数组: NSArray *viewControllers = self.navigationController.viewControllers; 这只返回一个控制器,但是这个返回不是我的根视图控制器。 如果我试图调用这个: UIViewController *root = (UIViewController*)[self.navigationController.viewControllers objectAtIndex:0]; 这仍然返回null。 还有什么我可以尝试获得我的根视图控制器的实例? 谢谢。

presentViewController并显示导航栏

我有一个视图控制器层次结构和最顶级的控制器显示为模式,并希望知道如何显示导航栏时使用 'UIViewController:presentViewController:viewControllerToPresent:animated:completion' “presentViewController:animated:completion:”的文档注意: “在iPhone和iPod touch上,呈现的视图始终是全屏显示的。 在iPad上,演示文稿取决于modalPresentationStyle属性中的值。 对于“modalPresentationStyle”,文档说: 演示文稿的风格决定了如何在屏幕上显示模式呈现的视图控制器。 在iPhone和iPod touch上,模式视图控制器总是全屏显示,但在iPad上有几种不同的显示选项。 一旦视图控件显示出来,是否有办法确保导航栏在状态栏下方可见? 我是否应该将文档解释为,您没有获得iPhone / iPod的任何选项,只能在iPad上使用? 以前,我使用'UIViewController:presentModalViewController:animated' ,它工作正常,但自iOS 5.0以来,API已被弃用,所以我切换到新的。 从视觉上看,我所要做的就是让新控制器从屏幕底部滑入,就像旧的API一样。 [用代码更新]: // My root level view: UIViewController *vc = [[RootViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]]; navController = [[UINavigationController alloc] initWithRootViewController:vc]; …. // Within the RootViewController, Second view controller is created and added // to the hierarchy. It is […]

topLayoutGuide在子视图控制器中

我有一个UIPageViewController与半透明的状态栏和导航栏。 它的topLayoutGuide是64像素,正如所料。 但是, UIPageViewController的子视图控制器UIPageViewController报告0像素的topLayoutGuide ,即使它们显示在状态栏和导航栏下方。 这是预期的行为? 如果是这样,在真正的topLayoutGuide下定位子视图控制器视图的最好方法是什么? (使用parentViewController.topLayoutGuide ,我认为这是一个黑客)

在UIViewController的视图内的iOS嵌套视图控制器视图?

在UIViewController的视图中有一个嵌套的视图控制器的视图通常是不好的编程习惯吗? 比如说,我想要有一些对用户触摸有反应的交互元素,但是只占用屏幕的25%。 我想我会添加这个嵌套的视图控制器到我的UIViewController说: [self.view addSubview: nestedViewController.view];

如何添加一个UIViewController的视图作为子视图

请注意谷歌,这个质量保证现在是六年过时了 ! 正如下面的Micky和其他人所提到的,现在这些工作已经在iOS平台上与Containers完成了。 我有一个控制许多子视图的ViewController。 当我点击其中一个button时,我初始化另一个视图控制器,并显示它的视图作为这个视图的子视图。 然而,子视图超出了子视图框架的边界,并且事实上充满了整个屏幕。 什么可能是错的? 我认为问题是,UIViewController的视图有一个框架(0,0,320,460),因此填充整个屏幕(虽然它只接触的触摸事件,只有在子视图范围内触摸)。 我怎样才能调整框架适合作为子视图。 总之,我需要帮助添加一个视图控制器的视图作为子视图到另一个视图控制器的视图。 谢谢!

presentViewController:animation:YES视图不会出现,直到用户再次点击

我得到了一些与presentViewController:animated:completion奇怪的行为presentViewController:animated:completion 。 我所做的基本上是一个猜谜游戏。 我有一个UIViewController (frequencyViewController)包含一个UITableView (frequencyTableView)。 当用户点击包含正确答案的questionTableView中的行时,视图(correctViewController)应该实例化,其视图应该从屏幕底部向上滑动,作为模态视图。 这告诉用户他们有一个正确的答案,并重置后面的frequencyViewController准备好下一个问题。 correctViewController被解除button按下显示下一个问题。 这一切都工作正常,每当correctViewController的视图立即出现,只要presentViewController:animated:completion animated:NO 。 如果我设置animated:YES ,correctViewController被初始化,并调用viewDidLoad 。 然而viewWillAppear , viewDidAppear和presentViewController:animated:completion的完成块不会被调用。 该应用程序只是坐在那里仍然显示frequencyViewController,直到我再次点击。 现在,viewWillAppear,viewDidAppear和完成块被调用。 我调查了一下,这不只是另一个水龙头,将导致它继续。 看起来,如果我倾斜或摇动我的iPhone这也可以导致它触发viewWillLoad等,就像它等待任何其他位的用户input之前,它会进步。 这发生在一个真正的iPhone和模拟器,我通过发送摇命令模拟器certificate。 我真的不知道该怎么办…我真的很感激任何人都可以提供的帮助。 谢谢 这是我的代码。 这很简单 这是questionViewController中充当委托给questionTableView的代码 – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row != [self.frequencyModel currentFrequencyIndex]) { // If guess was wrong, then mark the selection as incorrect NSLog(@"Incorrect Guess: %@", [self.frequencyModel […]

popViewController的完成块

当使用dismissViewController解除模态视图控制器时,可以select提供一个完成块。 有没有类似的popViewController ? 完成论证是非常方便的。 例如,我可以使用它阻止从tableview中删除一行,直到模式被closures,让用户看到行animation。 从推视图控制器返回时,我想同样的机会。 我已经尝试将popViewController放置在一个UIViewanimation块中,我可以访问完成块。 但是,这会对正在popup的视图产生一些不需要的副作用。 如果没有这样的方法,有什么解决方法?

iOS7 UIModalTransitionStyleFlipHorizo​​ntal在转换后反弹

我正在更新我的应用程序的iOS 7,我发现了一个奇怪的问题。 我用UIModalTransitionStyleFlipHorizontal呈现包裹在UINavigationController中的UIViewController。 在iOS 6中,它工作正常,但在iOS 7中,导航栏在转换后弹跳。 这是否与状态栏有关? 我已经将主导航栏的半透明设置为NO 。 在Info.plist中, 基于视图控制器的状态栏外观设置为NO。 这里是一个GIF显示在一个最小的演示应用程序的问题: 这是我的代码: feedNavigationController = [[UINavigationController alloc] init]; feedNavigationController.navigationBar.translucent = NO; SettingsViewController *settingsVC = [[SettingsViewController alloc] init]; feedNavigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [feedNavigationController setViewControllers:[NSArray arrayWithObjects:settingsVC, nil]]; [self presentViewController:feedNavigationController animated:YES completion:nil];

如何识别导航堆栈中的前一个视图控制器

我有2个独立的navigationcontrollers RootViewController ,一个用RootViewController A,另一个用RootViewController B. 我能够将ViewController C推送到A或B的导航堆栈上。 问题:当我在ViewController C中时,如何知道我是否在属于A或B的堆栈中?

iOS5 Storyboard UIViewController哪个init方法被storyboard调用?

哪个init方法被故事板调用的UIViewControllers添加到故事板?