其他分享
首页 > 其他分享> > Swift进阶学习二——基础控件创建、页面跳转

Swift进阶学习二——基础控件创建、页面跳转

作者:互联网

上期写到了swift语言项目搭接,这期主要写关于swift语言对于oc创建基础控件的区别和改变,swift创建控件的用法。

项目创建完成会默认三个文件,两个Delegate文件,先在ViewController控制器中开始我们的简单控件的创建与使用。

                           创建几个备用文件,创建完之后的项目目录。                   

控制器:对于只属于控制器的方法、属性要记得只写入在class之间的大括号里面

import UIKit

class FourthVC: UIViewController { //代表这个控制器 在这个大括号里面代表都属于FourthVC控制器里 
    override func viewDidLoad() {
        super.viewDidLoad()

    }
 
}

//超过class FourthVC: UIViewController {} 定义在这里的方法代码全局方法

创建一个按钮,我采用的是Masonry布局,需要导入Masonry。采用点语法的方式调用,和oc用户基本相识。这是创建一个按钮并且模态视图跳转到第二个控制器。在swift我们无论创建什么对象都用let或者var来修饰,区别oc中创建控件、对象如model对象是用 Model *model方式。

//创建一个按钮
let btn = UIButton(type: .custom)
        btn.setTitle("我是一个按钮", for: .normal)
        btn.backgroundColor = UIColor.red
        self.view.addSubview(btn)
        btn.mas_makeConstraints({ (make: MASConstraintMaker?) in
            make?.top.left().equalTo()(self.view)?.offset()
            make?.height.mas_equalTo()(100)
            make?.width.equalTo()(self.view)
        })
//        btn.addTarget(self, action: Selector(tapped(sender: btn)), for: .touchUpInside)
        btn.addTarget(self, action: #selector(tapped), for: .touchUpInside)
        



// 定义按钮的实现方法
    @objc func tapped(sender: UIButton) {
        let second = SecondVC()
        second.modalPresentationStyle = UIModalPresentationStyle(rawValue: 5)! //设置模态视图的弹出状态
        self.present(second, animated: (YESSTR != 0)) {
            
        };
           print(sender.tag)
       }

创建UITableView,同样需要注册、实现代理方法。这里是自定义了一个名为FirstTableCell类作为cell。其中实现代理方法我们可以extension把同类代理方法放在一个扩展里,模块化管理。增强代码可读性。

//我这里写成tabView为全局变量属性。
    let tabView = UITableView()  
    let tabvieid = "tabvieid"

//这里写在viewDidLoad方法里面 
  tabView.register(FirstTableCell.self, forCellReuseIdentifier: tabvieid) //注册单元格
        tabView.delegate = self
        tabView.dataSource = self
        self.view.addSubview(tabView)  //设置代理

        tabView.mas_makeConstraints({ (make: MASConstraintMaker?) in
            make?.top.equalTo()(btn.mas_bottom)?.offset()
            make?.bottom.equalTo()(self.view.mas_bottom)
            make?.left.width().equalTo()(self.view)

        })



// MARK: - extension 扩展方法   写在class:UIViewController之外 extension代码ViewController的扩展,然后把一类代理方法放一个扩展里面   代码可读性更强,模块化。这里表示实现了tabView的delegate和dataSource。
extension ViewController: UITableViewDelegate,UITableViewDataSource  {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10;
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tabView.dequeueReusableCell(withIdentifier: tabvieid, for: indexPath)  
        
        return cell
    }
    
}

这里对于FirstTableCell作一个简单实现,创建一个UIButton,没有实现方法

import UIKit
import Masonry

class FirstTableCell: UITableViewCell {
//    ReuseIdentifier
    let btn = UIButton(type: .custom)  //定义一个按钮
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { //覆写init方法
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.initCell();
        
    } 
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    
    func initCell() {  // 实现UI的创建
        btn.setTitle("这是一个cell", for: .normal)
        btn.backgroundColor = UIColor.red
        self.contentView.addSubview(btn)
     
        btn.mas_makeConstraints({ (make: MASConstraintMaker?) in
            make?.center.equalTo()(self.contentView)
//            make?.width.height().mas_equalTo()(200);
            
        })
    }

}

按钮和UITableView创建之后的效果图

                                                    

点击第一个视图按钮进入第二个黄色图页面 属于模态视图弹出。这里创建一个NAV按钮,导航弹出下一个黄色视图,X按钮点击取消模态视图回到上一个界面。再创建一个文本展示框。

import UIKit
import Masonry


class SecondVC: UIViewController {
    let lab = UILabel() //文本展示

    override func viewDidLoad() {
        super.viewDidLoad()
        runoob(site:"wrwrwr")
        let vc = ViewController()
        self.view.backgroundColor = UIColor.yellow
        vc.nameert()
//        self.navigationController.customMirror
        // Do any additional setup after loading the view.
        
        let btn = UIButton(type: .custom)
        btn.setTitle("X", for: .normal)
        btn.backgroundColor = UIColor.red
        self.view.addSubview(btn)
        btn.mas_makeConstraints({ (make: MASConstraintMaker?) in
            make?.left.top().equalTo()(self.view)?.offset()(30)
            make?.width.height().mas_equalTo()(50);
        })
//        btn.addTarget(self, action: Selector(tapped(sender: btn)), for: .touchUpInside)
        btn.addTarget(self, action: #selector(tapped), for: .touchUpInside)
        
        self.view.addSubview(lab)
        lab.mas_makeConstraints({(make:MASConstraintMaker?) in
            make?.left.equalTo()(btn)
            make?.top.equalTo()(btn.mas_bottom)
        })
        lab.text = "我是一个文本展示框"
        
        
        
        
        let navbtn = UIButton(type: .custom)
        navbtn.setTitle("NAV", for: .normal)
        navbtn.backgroundColor = UIColor.red
        self.view.addSubview(navbtn)
        navbtn.mas_makeConstraints({ (make: MASConstraintMaker?) in
            make?.center.equalTo()(self.view)
            make?.width.height().mas_equalTo()(50);
        })
//        btn.addTarget(self, action: Selector(tapped(sender: btn)), for: .touchUpInside)
        navbtn.addTarget(self, action: #selector(navtapped), for: .touchUpInside)
    }
    
    
    @objc func tapped(sender: UIButton) {
        self.dismiss(animated: (YESSTR != 0)) {
            
        }
       }

    @objc func navtapped(sender: UIButton) {  //创建一个导航栏控制器并且给第三个控制器作为根控制器,跳转到导航栏控制器,modalPresentationStyle设置导航栏控制器方式
        
         let nav1313 =  UINavigationController(rootViewController: ThirdVC())
        nav1313.modalPresentationStyle = UIModalPresentationStyle(rawValue: 5)!

        self.present(nav1313, animated: (YESEXPR != 0)) {
            
        }
    
    }

}

 

标签:控件,mas,进阶,make,equalTo,跳转,btn,self,view
来源: https://blog.csdn.net/Guessplease/article/details/115397498