Tag: uiviewcontroller

设置UIWindow的rootViewController是做什么的?

将视图控制器分配给此属性(以编程方式或使用Interface Builder)将视图控制器的视图作为窗口的内容视图进行安装。 上面的引用来自UIWindow的参考。 我的问题是关于特定的阶段: “作为窗口的内容视图安装视图控制器的视图” 内容视图究竟是指什么? http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html

UICollectionView中的UIViewController

我有一个全屏UICollectionView在我的应用程序。 它水平滚动,每个单元格填充集合视图的边界。 集合视图由UIViewControllerpipe理。 鉴于每个“页面”是相当复杂的,它是有意义的,每个页面本身由一个关联的UIViewControllerpipe理。 iOS 5支持视图控制器遏制,以便在视图连接和分离时,子控制器应该接收适当的生命周期方法(例如, viewWillAppear:等)。 这个视图回收有多好? 从页面“1”滚动到“2”,将创build一个新的视图(因为两者都可以在触屏时同时在屏幕上)。 从页面“2”移动到“3”, UICollectionView可以成功地将页面“1”的视图出列,但是现在发生了什么? 我会像这样强制插入视图到视图控制器三? id cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ident" forIndexPath:indexPath]; UIViewController *child_controller = [self controllerAtIndexPath:indexPath]; [child_controller setView:cell]; // … and so on 这感觉不对 但是,我不能想到在这种情况下正确重用视图的正确方法。 我完全采取错误的做法吗?

iOS – 半透明模式视图控制器

我想在当前的视图上以模态方式呈现一个略带透明背景的视图控制器,这样第一个视图在模态视图下稍微可见。 我设置了模式视图控制器的alpha值,并将modalPresentationStyle设置为UIModalPresentationCurrentContext ,如另一篇文章中的build议。 结果是animation时视图背景是透明的,但当视图控制器就位时,它变成不透明的黑色。 在解雇这个animation的过程中,它变得透明起来。 我怎样才能让它在活动时是透明的? 我已经在iOS 6 and 7testing。 我使用的代码如下: MyModalViewController *viewController = [[MyModalViewController alloc] init]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController]; [navController setNavigationBarHidden:YES]; self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; [self.navigationController presentViewController:navController animated:YES completion:NULL];

容器视图控制器 – 通知父母的行动

说我有一个自定义的容器视图控制器(MainViewController),我做这样的事情: – (void)viewDidLoad { [super viewDidLoad]; HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; [self addChildViewController:homeVC]; [self.view addSubview:homeVC.view]; } HomeViewController会有一个button,比如“go”,按下的时候需要前进到下一个视图控制器。 所以我需要通知这个动作的MainViewController。 做这个的最好方式是什么? 我正在使用自定义容器,因为我需要在视图控制器之间进行自定义转换。 当按下“go”时,HomeViewController上的一些视图将animation,而来自新视图控制器的视图将animation到位。 很明显,我可以给HomeViewControllertypes的MainViewController的属性,并通过这种方式进行调用,但我希望有一个更清洁的方式与容器视图控制器API。

防止一个视图控制器autorotate?

我的应用程序可以自动旋转,但我需要其中的一个意见,只能在肖像模式下显示,不知道如何实现这一点。 我尝试了这个(除其他外),但是有问题的视图仍然在旋转: // ViewController.m -(BOOL)shouldAutorotate { return NO; } – (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 有人能指出我做错了什么吗? 谢谢。 -编辑- 这是iOS 6.1

从另一个ViewController演示故事板ViewController

我的iOS应用程序的Storyboard中有多个UIViewController。 我想从一个不同的UIViewController中打开一个UIViewControllers(在storyboard中)。 我试过下面的代码,但它不工作,即使我在iOS 5之前使用它,它工作正常。 – (IBAction)addNotes:(id)sender { NotesViewController *notesView = [[NotesViewController alloc] initWithNibName:@"NotesViewController" bundle:nil]; [self presentModalViewController:notesView animated:YES]; } 如何使用iOS 5 Storyboard执行此操作?

UIViewController purgeMemoryForReason:在iOS 5上崩溃

所以我在Crashlytics上看到这个崩溃很常见,在运行iOS 5的iPad和iPad 2上都是如此。它看起来像是由内存警告引起的,但是堆栈跟踪没有引用任何我的应用程序代码,只是iOS构架: 0 libobjc.A.dylib objc_msgSend + 15 1 UIKit -[UIViewController purgeMemoryForReason:] + 64 2 Foundation __57-[NSNotificationCenter addObserver: selector: name: object:]_block_invoke_0 + 18 3 CoreFoundation ___CFXNotificationPost_block_invoke_0 + 70 4 CoreFoundation _CFXNotificationPost + 1406 5 Foundation -[NSNotificationCenter postNotificationName: object: userInfo:] + 66 6 Foundation -[NSNotificationCenter postNotificationName: object:] + 30 7 UIKit -[UIApplication _performMemoryWarning] + 80 8 […]

presentViewController和UINavigationController之间的区别?

请告诉presentViewController和UiNavigationController之间的区别? 我可以使用presentViewController而不是UINavigationController在应用程序中导航不同的视图? 什么情况下使用?

适当的方法来隐藏iOS上的状态栏,animation和调整根视图的大小

考虑一个视图控制器,当单击一个button时需要滑出(或隐藏)状态栏。 – (void) buttonClick:(id)sender { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; } 上面有效地隐藏了状态栏,但是没有适当地调整根视图的大小,在顶部留下了20个像素的间隙。 我所期望的是扩展状态栏以前使用的空间(animation,与状态栏animation持续时间相同)的根视图。 什么是这样做的正确方法? (我知道有很多类似的问题,但我找不到隐藏状态栏的需求,而不是隐藏它来显示一个新的视图控制器) “蛮力”的做法 显然,下面的作品… [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; [UIView animateWithDuration:0.25 animations:^{ CGRect frame = self.view.frame; frame.origin.y -= 20; frame.size.height += 20; self.view.frame = frame; }]; …但有缺点: 硬编码幻灯片animation的持续时间 硬编码状态栏的高度 根查看原点保持在(0,-20)。 我喜欢我的框架尽可能从(0,0)开始。 我已经试过了 确保根视图的autoresize掩码具有UIViewAutoresizingFlexibleTopMargin和UIViewAutoresizingFlexibleHeight 。 隐藏状态栏后调用[self.view setNeedsLayout] 。 隐藏状态栏后调用[self.view setNeedsDisplay] 。 在隐藏状态栏之前和之后将wantsFullScreenLayout设置为YES 。

容器视图在completeTransition上消失:

我正在使用自定义视图控制器转换UIViewControllerAnimatedTransitioning来呈现和closures视图控制器。 呈现animation工作正常,但是当我运行解除animation时,一旦我呼叫completeTransition: containerView被删除。 我不确定发生了什么,这是转换代码: – (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *containerView = [transitionContext containerView]; containerView.backgroundColor = [UIColor blackColor]; if (self.reverse) { [containerView addSubview:toViewController.view]; [containerView addSubview:fromViewController.view]; } else { [containerView addSubview:fromViewController.view]; [containerView addSubview:toViewController.view]; } if (! self.reverse) { // Forward toViewController.view.frame = CGRectMake(-containerView.frame.size.width, 0, containerView.frame.size.width, containerView.frame.size.height); } else […]