在swift中没有了宏定义这个概念,所以在获取屏幕宽高时,可以设置其为常量
let SRC_WIDTH = UIScreen.main.bounds.width
let SRC_HEIGHT = UIScreen.main.bounds.height
swfit创建UITableView和OC中差不多,主要是语法发生了改变的,还有一点就是拆解包问题,不过一般编译器会给出提示
你要实现UiTableView,肯定就少不了要实现它的相关代理方法,在swift中不需要尖括号,只需要在继承的类后面用逗号隔开就可以来,如下所示:
class TableViewController:UIViewController,UITableViewDataSource,UITableViewDelegate{},这是系统会报错,不用管,因为你还没有实现它的代理和协议的;
声明UITableView
var tableView: UITableView!
在初始化UITableView,如下:
/**
* 创建UITableView
*/
func tableViewTest() -> UITableView{
if tableView == nil {
tableView = UITableView(frame: CGRect(x: 0, y: 0, width: SRC_WIDTH, height: SRC_HEIGHT), style: .plain)
tableView?.delegate = self
tableView?.dataSource = self
tableView?.showsHorizontalScrollIndicator = false
tableView?.showsVerticalScrollIndicator = false
tableView?.bounces = false
tableView?.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))//去除多余的下划线
}
return tableView!
}
UITableView已经创建好了,接下来的就是要实现它的数据源方法的:
分别是:
//返回cell的显示的数据
func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) ->UITableViewCell{}
//返回当前的Section中row行数
func tableView(tableView:UITableView, numberOfRowsInSection section:Int) -> Int{}
//返回当前几个Section
func numberOfSectionsInTableView(tableView:UITableView) ->Int { }
//选中时方法
func tableView(tableView:UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath){}
显示数据源方法如下:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "CELL")
if cell == nil {
cell = UITableViewCell(style: .default, reuseIdentifier: "CELL")
}
// cell!.selectionStyle = .none
cell!.textLabel?.text = items[indexPath.row]
return cell!
}
效果图如下所示