美文网首页
swift 4.2代码实现模态视图导航

swift 4.2代码实现模态视图导航

作者: yytester | 来源:发表于2019-01-15 17:14 被阅读5次

    AppDelegate.swift中application部分:

    private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window?.backgroundColor = UIColor.white
            let navigationController = UINavigationController(rootViewController: ViewController())
            self.window?.rootViewController = navigationController
            self.window?.makeKeyAndVisible()
            
            return true
        }
    

    ViewController.swift:

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let screen = UIScreen.main.bounds
            
            self.navigationItem.title = "登录"
            
            /// 1.添加用户ID:标签
            let labelId = UILabel(frame: CGRect(x: 80,y: 115, width: 80, height: 21))
            labelId.text = "用户ID:"
            self.view.addSubview(labelId)
            
            /// 2.添加用户ID TextField
            let textFieldId = UITextField(frame: CGRect(x: 170, y: 106, width: 100, height: 30))
            textFieldId.borderStyle = .roundedRect
            self.view.addSubview(textFieldId)
            
            /// 3.添加密码:标签
            let labelPwd = UILabel(frame: CGRect(x: 80, y: 178, width: 80, height: 21))
            labelPwd.text = "密码:"
            self.view.addSubview(labelPwd)
            
            /// 4.添加密码 TextField
            let textFieldPwd = UITextField(frame: CGRect(x: 170, y: 169, width: 100, height: 30))
            textFieldPwd.borderStyle = .roundedRect
            self.view.addSubview(textFieldPwd)
            
            /// 5.添加 登录按钮
            let buttonLogin = UIButton(type: .system)
            buttonLogin.frame = CGRect(x: (screen.size.width - 30)/2, y: 231, width: 50, height: 30)
            buttonLogin.setTitle("登录", for: UIControl.State())
            self.view.addSubview(buttonLogin)
            
            /// 6.添加 注册按钮
            let buttonReg = UIButton(type: .system)
            buttonReg.frame = CGRect(x: (screen.size.width - 30)/2, y: 294, width: 50, height: 30)
            buttonReg.setTitle("注册", for: UIControl.State())
            buttonReg.addTarget(self, action: #selector(onClick(_:)), for: .touchUpInside)
            self.view.addSubview(buttonReg)
            
            NotificationCenter.default.addObserver(self, selector: #selector(registerCompletion(_:)), name: Notification.Name(rawValue: "RegisterCompletionNotification"), object: nil)
            
        }
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            NotificationCenter.default.removeObserver(self)
        }
        
    
        
        @objc func onClick(_ sender: AnyObject){
            let registerViewController = RegisterViewController()
            
            //用于实例化导航控制器UINavigationController, 将RegisterViewController嵌入到导航控制器中.
            let navigationController = UINavigationController(rootViewController: registerViewController)
            //呈现模态视图
            self.present(navigationController,animated: true,completion: nil)
        }
        
        @objc func registerCompletion(_ notionfication: Notification){
            let theData = notionfication.userInfo!
            let username = theData["username"] as! String
            print("username = " , username)
        }
    
    
    }
    

    RegisterViewController.swift:

    import UIKit
    
    class RegisterViewController: UIViewController {
        
        var txtUsername: UITextField!
        
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.navigationItem.title = "注册"
            
            let saveButtonItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(save(_:)))
            
            let cancelButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancel(_:)))
            
            self.navigationItem.rightBarButtonItem = saveButtonItem
            self.navigationItem.leftBarButtonItem = cancelButtonItem
            
            /// 1.添加用户ID:标签
            let labelId = UILabel(frame: CGRect(x: 35, y: 187, width: 100, height: 21))
            labelId.text = "用户ID:"
            self.view.addSubview(labelId)
            
            /// 2.添加Username TextField
            self.txtUsername = UITextField(frame: CGRect(x: 180, y: 178, width: 131, height: 30))
            self.txtUsername.borderStyle = .roundedRect
            self.view.addSubview(self.txtUsername)
        }
        
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
        
        @objc func save(_ sender: AnyObject) {
            
            self.dismiss(animated: true) { () -> Void in
                NSLog("点击Save按钮,关闭模态视图")
                
                let dataDict = ["username" : self.txtUsername.text!]
                
                NotificationCenter.default.post(name: Notification.Name(rawValue: "RegisterCompletionNotification"), object: nil, userInfo: dataDict)
                
            }
        }
        
        @objc func cancel(_ sender: AnyObject) {
            self.dismiss(animated: true, completion: {
                NSLog("点击Cancel按钮,关闭模态视图")
            })
        }
    
    }
    

    相关文章

      网友评论

          本文标题:swift 4.2代码实现模态视图导航

          本文链接:https://www.haomeiwen.com/subject/arwydqtx.html