显示和关闭模态视图控制器

2020/11/23 08:31 · ios ·  · 0评论

谁能给我示例代码,我可以使用该示例代码首先呈现一个模态视图控制器,然后将其关闭?这就是我一直在尝试的:

NSLog(@"%@", blue.modalViewController);
[blue presentModalViewController:red animated:YES];
NSLog(@"%@", blue.modalViewController);
[blue dismissModalViewControllerAnimated:YES];
NSLog(@"%@", blue.modalViewController);

这段代码在viewDidLoad中(“ blue”和“ red”都是UIViewController的子类)。我希望我将显示红色视图,然后立即将其隐藏起来,并带有一些动画。但是,这段代码仅呈现模态视图,而不会将其忽略。任何的想法?第一个日志显示“空”,而其他两个日志显示<RedViewController: 0x3d21bf0>

另一点是,如果我将此代码放在applicationDidFinishLaunching中:红色视图根本不会出现,并且所有日志都为“ null”

首先,将代码放在applicationDidFinishLaunching中时,可能是从Interface Builder实例化的控制器尚未链接到您的应用程序的情况(因此“ red”和“ blue”仍然是nil)。

但是要回答您的第一个问题,您做错了什么是调用dismissModalViewControllerAnimated:了错误的控制器!应该是这样的:

[blue presentModalViewController:red animated:YES];
[red dismissModalViewControllerAnimated:YES];

通常,“红色”控制器应决定在某个时候解散自己(可能是单击“取消”按钮时)。然后,“红色”控制器可以在上调用该方法self

[self dismissModalViewControllerAnimated:YES];

如果仍然无法正常运行,则可能与控制器以动画方式呈现有关,因此您可能不允许在呈现控制器后不久就将其关闭。

迅速

为Swift 3更新

在此处输入图片说明

故事板

创建两个每个都有一个按钮的View Controller。对于第二个视图控制器,将类名称设置为SecondViewController,情节提要ID设置为secondVC

ViewController.swift

import UIKit
class ViewController: UIViewController {

    @IBAction func presentButtonTapped(_ sender: UIButton) {
        
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let myModalViewController = storyboard.instantiateViewController(withIdentifier: "secondVC")
        myModalViewController.modalPresentationStyle = UIModalPresentationStyle.fullScreen
        myModalViewController.modalTransitionStyle = UIModalTransitionStyle.coverVertical
        self.present(myModalViewController, animated: true, completion: nil)
    }
}

SecondViewController.swift

import UIKit
class SecondViewController: UIViewController {
    
    @IBAction func dismissButtonTapped(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }
}

资源:

在xcode 4.52中,我最简单的方法是创建另一个视图并使用segue modal(将按钮从一个视图拖动到第二个视图,选择Modal)将它们连接起来。然后将按钮拖动到您创建的第二个视图或模式视图。控制此按钮并将其拖动到头文件并使用动作连接。这将在controller.m文件中创建一个IBaction。在代码中找到您的按钮操作类型。

[self dismissViewControllerAnimated:YES completion:nil];

presentModalViewController:

MainViewController *mainViewController=[[MainViewController alloc]init];
[self.navigationController presentModalViewController:mainViewController animated:YES];

dismissModalViewController:

[self dismissModalViewControllerAnimated:YES];

最简单的方法是使用Storyboard和Segue。

只需从TabBarController的FirstViewController(而非导航控制器)到使用登录UI的LoginViewController创建Segue,并将其命名为“ showLogin”。

创建一个返回BOOL的方法以验证用户登录和/或他/她的会话是否有效……最好在AppDelegate上。称为isSessionValid。

在您的FirstViewController.m上,覆盖方法viewDidAppear,如下所示:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if([self isSessionValid]==NO){
        [self performSegueWithIdentifier:@"showLogin" sender:self];
    }
}

然后,如果用户成功登录,则只需关闭或弹出LoginViewController即可显示您的标签。

运作100%!

希望能帮助到你!

迅速

self.dismissViewControllerAnimated(true, completion: nil)

本文地址:http://ios.askforanswer.com/xianshiheguanbimotaishitukongzhiqi.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!