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