Tag: modalviewcontroller

如何在继续执行之前确保完成asynchronous操作

我正在构build一个iOS应用程序,其代码的一部分依赖于从特定任务返回的成功/失败值。这些任务涉及来自库的callback。 我希望这个任务的返回值只有在callback函数返回成功/失败之后才能被返回。 但是因为我写了一个顺序代码,所以即使在callback返回成功/失败之前,也会返回返回值。 我看着使用模式视图控制器,并从我的理解,我可以使任务从这个视图控制器执行,然后返回代码。 但是这也不符合我的要求,因为启动callback序列的代码被执行时,我不希望显示一个新的视图控制器。 虽然有一定的callback,需要我提示用户提供信息。 我在popover中做这个,我考虑在popover模式中做视图控制器。 但是,callback将仍然是主线程的一部分,我不会收到他们当我的popover模态(?)。 以我目前对这些概念的理解,我不知道如何继续。 有没有办法在iOS中做到这一点? 编辑:代码做这样的事情 //In CustomTableViewController -(void) someFunc { ENUM_NAME code = [TaskController startTheTask:args]; if(code == SUCCEEDED) { //Do Something } if(code == FAILED) { //Do Something Else } } //In TaskController -(ENUM_NAME) startTheTask:args { startWorkflow(args); //This function registers callback function with the library. return finalCode; //This is […]

仅通过分割视图控制器的一半呈现模态视图控制器

我正在修改现有的iPhone应用程序以在iPad上运行。 在iPhone版本中,当用户点击一个工具栏button时,我会提供一个带有modalTransitionStyle的UIModalTransitionStyleFlipHorizontal的模态视图控制器,这使得一个非常好的“卡片翻转”animation。 iPad界面基于分割视图(实际上是MGSplitViewController )。 工具栏button在细节窗格中,所以当我呈现模式视图控制器时,它占据了整个屏幕,翻转过渡是没有意义的。 为了获得正确的用户交互,我希望模态控制器出现,并且仅在详细视图控制器上进行转换,使主视图控制器保持原样。 有没有办法做到这一点?

iOS:显示UIWebView顶部的模态视图

是否有可能在UIWebView的顶部显示模态视图? 我有一个加载WebView的UIViewController。 然后,我想要在顶部推一个模态视图控制器,以便模态视图暂时覆盖WebView … WebView工作正常; 这是它在View Controller中的加载方式: – (void)loadView { // Initialize webview and add as a subview to LandscapeController's view myWebView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; myWebView.scalesPageToFit = YES; myWebView.autoresizesSubviews = YES; myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); myWebView.delegate = self; self.view = myWebView; } 如果我尝试从viewDidLoad中加载模态视图控制器,则不会出现任何模态视图: – (void)viewDidLoad { [super viewDidLoad]; // Edit […]

iOS – 在解散和滚动手势之间切换

Line Messenger应用程序(日本的事实上的Messenger软件)中有一个行为,我试图效仿。 基本上,他们有一个模式的视图控制器内的滚动视图。 当滚动动作到达其内容的顶部时,视图控制器无缝切换到交互式解除animation。 另外,当手势将视图返回到屏幕的顶部时,控制将返回到滚动视图。 这是它的外观的一个GIF。 对于我的生活,我无法弄清楚他们是如何做到的。 我尝试了一些不同的方法,但都失败了,我没有想法。 任何人都可以指向正确的方向吗? EDIT2 为了澄清,我想模仿的行为不仅仅是拖动窗口。 我可以做到这一点,没问题。 我想知道如何使用相同的滚动手势(不用抬起手指)触发解除转换,然后在视图被拖回到原始位置后,将控制权转移回滚动视图。 这是我无法弄清的部分。 结束编辑2 EDIT1 这是我迄今为止。 我能够使用滚动视图委托方法来添加处理常规解雇animation的目标select器,但它仍然不能按预期工作。 我创build一个UIWebView作为属性的UIViewController 。 然后我把它放在一个UINavigationController ,这是以模态方式呈现的。 导航控制器使用animation/转换控制器进行常规的交互式解除(可以通过在导航栏上进行手势来完成)。 从这里,一切正常,但不能从滚动视图触发解雇。 NavigationController.h @interface NavigationController : UINavigationController <UIViewControllerTransitioningDelegate> @property (nonatomic, strong) UIPanGestureRecognizer *gestureRecog; – (void)handleGesture:(UIPanGestureRecognizer*)gestureRecognizer; @end NavigationController.m #import "NavigationController.h" #import "AnimationController.h" #import "TransitionController.h" @implementation NavigationController { AnimationController *_animator; TransitionController *_interactor; } – (instancetype)init […]

呈现模态视图控制器隐藏导航栏

我有一个导航栏的应用程序导航,但有一些实例,而不是将视图控制器推到堆栈上,我需要以模态方式呈现视图控制器。 问题是,当我closures模式视图控制器时,除了导航栏被隐藏和(父视图)已被resize,这是根据文档预期的行为,一切都按预期运行。 所以我想我可以简单地调用一个内置的方法来取消隐藏导航栏。 我已经尝试过了 [self.navigationController setNavigationBarHidden:NO]; 以及没有成功的animation版本。 文档在方法中谈到这个 presentModalViewController: animated: 在它所说的讨论部分, 在iPhone和iPod touch设备上,modalViewController的视图始终呈现为全屏“and”将modalViewController属性设置为指定的视图控制器。 调整其视图并将其附加到视图层次结构中。“然而,文档并没有告诉我如何在驳回模式视图之后撤销这个过程。 有没有其他人经历过这个,find了解决办法? 编辑:我有这个相同的问题,所以不要问我自己的问题,我赞助这一个奖金。 这是我的具体情况: 在我的情况下,我通过导航控制器在模态视图控制器中显示图像select器: -(void) chooseImage { if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { imagepicker = [[UIImagePickerController alloc] init]; imagepicker.allowsEditing = NO; imagepicker.delegate = self; imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagepicker.navigationBar.opaque = true; imagepicker.wantsFullScreenLayout = NO; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { if (self.view.window != nil) { […]

模式视图控制器强制在iOS 6中的横向方向

我有一个以纵向模式呈现的UITabBarController。 在其中一个选项卡上,我有一个button,显示一个UIViewController模态(一个简单的故事板segue执行操作)。 我想要在横向模式下显示此模式视图,但是我无法自动旋转。 我有这在模态视图控制器 – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } 我已经添加landscapeLeft到.plist支持的方向(虽然这也允许TabBar旋转,我不想) 我也将其添加到模态视图的ViewDidLoad [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft; 但我不能让它自己旋转。 谢谢 编辑—- 看来应该AutoRotate甚至不被称为! 此外,我试图检测方向和下面的代码总是显示2,无论方向! if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) { NSLog(@"1"); self.hostView.frame = CGRectMake(0, 60, 200, 255); } else { NSLog(@"2"); self.hostView.frame = CGRectMake(0, 45, 480, 255); } 编辑2 — 我的错。 我想我应该提到我正在使用iOS 6.显示器在iOS 5上自动旋转。shouldAutorotateToInterfaceOrientation已弃用,所以我需要阅读新的方法。

ios:如何解除模式视图控制器,然后popup推视图控制器

我有一个视图控制器B,通过根视图控制器A被推入到导航堆栈中,并且如果视图控制器B的模型处于特定状态,则该视图控制器B需要显示备选视图,以便在模态上呈现另一个视图控制器C.当我解雇视图控制器CI也想popup视图控制器B,如果这也是在导航堆栈上。 我想这样做只有一个过渡。 有任何想法吗?

如何解除用presentModalViewController打开的视图控制器:

我介绍了一个使用presentModalViewController:的视图控制器presentModalViewController:现在如何closures/解除它?

ios希望FullScreenLayout状态栏可见

我面临以下问题,我试图提出一个modalViewController,并使其覆盖整个屏幕,例如: [controller setWantsFullScreenLayout:yes]; [myNavController presentModalViewController:controller animated:yes]; 结果是控制器不覆盖整个屏幕,并且状态栏在顶部可见。 我不明白为什么会发生这种情况。

目标C:如何从appdelegate展示模态视图控制器?

我在我的应用程序的appdelegate。 如何在“didfinishlaunching”方法中添加模态视图控制器? 我尝试了以下,但没有工作 SomeViewController *vc = [[SomeViewController alloc]init]; [self.tabController.navigationController presentModalViewController:vc animated:NO]; 编辑:我改变了我的实现以下 self.tabController.selectedViewController = [self.tabController.viewControllers objectAtIndex:0]; SomeViewController *vc = [[SomeViewController alloc]init]; [self.tabController.selectedViewController presentModalViewController:vc animated:NO]; 我检查了“select的视图控制器”不是空的…但是我仍然无法得到我需要的输出。 有什么我失踪?