Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 关闭UIViewController_Objective C_Ios - Fatal编程技术网

Objective c 关闭UIViewController

Objective c 关闭UIViewController,objective-c,ios,Objective C,Ios,我正在尝试在一个UIViewController呼叫另一个后立即关闭。这应该很简单,但我没有成功。我使用以下方法: - (IBAction)bClose:(id)sender { iTest *test = [[iTest alloc] initWithNibName:@"iTest" bundle:[NSBundle mainBundle]]; test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

我正在尝试在一个
UIViewController
呼叫另一个后立即关闭。这应该很简单,但我没有成功。我使用以下方法:

- (IBAction)bClose:(id)sender {

    iTest *test = [[iTest alloc] initWithNibName:@"iTest" bundle:[NSBundle mainBundle]];
    test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:test animated:YES];
    [test release];

    [self dismissModalViewControllerAnimated:YES];
}

我相信这并不简单。我也做过类似的事情,但我在第一篇文章中介绍了第二篇文章,然后在第二篇文章想驳回的时候驳回了第一篇文章(同时驳回了这两篇文章)。为了更好地解释我的意思:

  • 主->当前控制器1
  • 控制员1->当前控制员2
  • 控制员2->解除控制员1
  • 不过,我相信有更好的解决办法

    大概是这样的:

    第一控制器内部:

    UIViewController *c1 = [[UIViewController alloc] init];
    [self presentModalViewController: c1 animated:YES];
    
    c1内:

    UIViewController *c2 = [[UIViewController alloc] init];
    c2.c1 = self;
    [self presentModalViewController: c2 animated:YES];
    
    c2内部:

    [c1 dismissModalViewControllerAnimated:YES];
    

    我也试过类似的方法,但是遇到了同样的问题

    我的解决方案是启动计时器,时间为0.5秒,然后关闭选择器中的视图


    为我工作。

    您到底想做什么?这不起作用,因为您试图关闭一个仍有子控制器打开的控制器。你应该回到绘图板,找到正确的导航方式。编辑以添加一些代码。我不能告诉你这是否有效,但我想我做了类似的事情。不再有代码。[自执行选择器:@selector(close)with object:nil afterDelay:0.5];-(void)close{[self dismissModalViewControllerAnimated:YES];}-它仍然失败,我做错了什么?在close方法中通过断点检查以确认调用了dismissModalview。如果是的话。然后将延迟更改为更高的值。这一观点将被驳回。这完全取决于第二种观点需要多少时间才能形成。我想在你提出新观点之前,你必须放弃它,但我可能错了。