Tag: uiviewcontroller

Swift – 从appDelegate的pushViewController,rootViewController.navigationController是零

遇到一些问题,特别是http://blog.originate.com/blog/2014/04/22/deeplinking-in-ios/ 我正在设置urlscheme,它运行良好,从另一个应用程序启动应用程序,但通过主机或url不工作,因为它似乎应该。 我使用所有视图布局的故事板和界面生成器。 该指南在appDelegate中显示了这个openURL: -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ if([[url host] isEqualToString:@"page"]){ if([[url path] isEqualToString:@"/page1"]){ [self.mainController pushViewController:[[Page1ViewController alloc] init] animated:YES]; } return YES; } } 这里是我的版本简化,并迅速从其他几个来源,即获取实例的ViewController从AppDelegate在Swift中我跳过的条件为目前的URL主机,以消除潜在的其他variables的问题。 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool { var rootViewController = self.window!.rootViewController let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) var profileViewController […]

在两个UIViewControllers视图之间滑动

我知道我已经问了几次这个问题,但是我很缺乏经验,不认为我已经得到了正确的答案。 我现在有两个视图控制器,每个都有一个.h文件,一个.m文件和一个.xib文件。 在这两个.xib文件中,我有一个UIView。 我怎样才能让它可以在这两个视图之间滑动? 例如,应用程序在第一个视图上打开,然后从右向左滑动,然后出现下一个视图。 当您滑过照片时,我想要将滑动的animation制作为“照片”应用程序的animation。

与两个UINavigationControllers共享相同的UIViewController作为rootViewController

更新:我决定走我的问题不同的路线。 我不使用直接重用相同的UIViewController ,而是使用两个设置为rootViewControllers的 vanilla UIViewController 。 在他们的loadView方法中,他们调用[storyboard instantiateViewControllerWithIdentifier:]来获得以前的UIViewController并将其视图设置为控制器的视图。 无论如何,这可能是首选的方法,因为我需要设置几个variables和委托。 我有一个UITtoryBoard与UITabBarController作为入口点与两个UINavigationControllers连接。 每个人都共享一个共同的UIViewController作为他们的根视图控制器。 当应用程序启动时,第一个UITabBarItem被选中并且视图按预期加载。 但是,当我select第二个UITabBarItem时 ,相同的视图不可见。 我看到一个黑色背景的UINavigationBar 。 我是不是做了不正确的故事板界面,还是我需要手动实例化UIViewController通过每个UINavigationController的方法 – 例如loadView?

如何在Swift中编写UIViewController的init方法

我无法将init方法添加到以下UIViewController类。 我需要在init方法中编写一些代码。 我必须编写init(编码器)方法吗? 即使当我添加编码器和解码器的方法,我仍然得到错误。 我也尝试使用init方法,但没有任何参数,但似乎也没有工作。 class ViewController: UIViewController { var tap: UITapGestureRecognizer? override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nil, bundle: nil) tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) } … … } 如果我没有参数调用super.init()方法的错误是“必须调用超类的指定初始化”,如果我传递参数nib和捆绑,那么错误是“必需的初始化init(编码器)”。 即使当我添加init(编码器)和init(解码器),它不起作用。

如何为自定义容器控制器转换“取消”视图外观转换

我创build了一个类似于UIPageViewController的自定义容器控制器,以便我可以实现一些自定义转换和数据源逻辑。 我试图模仿新的客户视图控制器转换API在iOS 7中的工作方式,除了在取消转换时使用视图外观callback时出现的一些恼人的怪癖时,它运行良好。 也就是说,在进行转换的时候,究竟应该在什么时候开始出现转换beginAppearanceTransition:animated:和endAppearanceTransition被调用? 我的自定义容器类有这样的代码: – (BOOL)shouldAutomaticallyForwardAppearanceMethods { return NO; // Since the automatic callbacks are wrong for our custom transition. } – (void)startTransition:(CustomTransitionContext *)context { // Get reference to the view controllers involved in the transition. UIViewController *oldVC = [context viewControllerForKey:UITransitionContextFromViewController]; UIViewController *newVC = [context UITransitionContextToViewController]; // Prepare parent/child relationship changes. [oldVC willMoveToParentViewController:nil]; [self […]

closuresModalViewController后刷新父视图控制器

在我的iOS应用程序中,用户可以从列表中select一个图像,在这个图像上显示一个包含图像的模式和删除图像的选项。 如果用户select删除图像,则返回到包含图像列表的原始viewController。 我需要然后刷新原来的ViewController,以考虑到已删除的图像。 我试图使用NSNotificationCenter广播时,图像被删除到父视图控制器。 但是,似乎广播从来没有收到。 还有其他的方法吗? 在模式被解除之后,将数据发送回父ViewController 检测何时从父ViewController解除模态? (我试图按照这里列出的例子,但似乎没有工作) 以下是我的代码: EditStepViewController(原始视图控制器): UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MediaPreviewViewController *mediaPreviewVC = (MediaPreviewViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MediaPreviewViewController"]; mediaPreviewVC.selectedImageURL = [NSString stringWithFormat:@"%@",gestureRecognizer.view.tag]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mediaPreviewVC]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didDismissMediaPreview) name:@"MediaPreviewDismissed" object:nil]; [self presentViewController:navigationController animated:YES completion:nil]; MediaPreviewViewController(第二个ViewController): … [self deleteImage]; [[NSNotificationCenter defaultCenter] postNotificationName:@"MediaPreviewDismissed" object:nil userInfo:nil]; [self dismissViewControllerAnimated:YES completion:^(){ […]

ios5 – 与故事板模式视图控制器的大小

有没有什么办法来调整模态使用故事板segue提出的视图控制器? 如何从模态视图控制器以翻转过渡显示另一个视图控制器? 如果我将其定义为Style = Modal,Presentation = Default,Transition = Flip Horizo​​ntal,则看起来很奇怪(背景是白色的)。 谢谢!

父视图控制器如何通知它的子视图控制器已经自行删除?

子视图控制器在子视图控制器的实现中被以下代码删除: – (void)commandFinishVC { [ self.view removeFromSuperview]; [ self removeFromParentViewController ]; } 子视图控制器及其视图已成功删除,但父母如何通知这个? -viewDidDisappear不被调用,-viewDidUnload已被弃用。 从我能find的例子来看,总是假定父视图控制器是提名被移除的孩子的事件的发起者,但对于我来说,孩子应该是自主的,以完成逻辑。 应该使用self.parentViewController属性调用remove方法,并在父视图控制器中使用类似下面的方法? – (void)commandFinishVC { [ childVC.view removeFromSuperview]; [ childVC removeFromParentViewController ]; }

在注销时重置故事板

我正在构build一个使用故事板的IOS 5.1 Web客户端应用程序。 我的一个动作是“注销”,在此期间,我想将根视图重置为由Storyboard的根视图创build的初始视图。 (login时,根据您的身份删除或添加一些查看项目;注销时,我想将它们重置为默认值,这是我在故事板中指定的值。 我意识到我可以以编程方式重置/重新添加所有的元素,但那么故事板有什么好处呢? 我认为有必要通过重新加载视图文件来回到原来的方式,对吧?

未调用iOS8接口旋转方法

由于willAnimateRotationToInterfaceOrientation:duration:在iOS8中被弃用 ,所以需要使用viewWillTransitionToSize:withTransitionCoordinator: 来代替 。 但是,这个方法不会在iOS8的我的视图控制器中被调用。 还有什么,我需要执行,为了这个callback工作? 我在文档中找不到任何东西。 我唯一能find的就是它属于新的UIContentContainer协议。 但是,即使我明确地将其添加到我的控制器的协议,它不起作用。 有任何想法吗?