import UIKit
class MovieViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
? ? //表格屬性
? ? vartable:UITableView=UITableView(frame:CGRect(x:0,y:0,width:scrWidth,height:scrHeight), style:UITableViewStyle.grouped)
? ? //給表格加載數(shù)據(jù)的字典
? ? vartableData = ["武俠":[
? ? ? ? ["name":"《精武英雄》","author":"李連杰"],["name":"《猛龍過江》","author":"李小龍"],["name":"《我是誰》","author":"成龍"]
? ? ? ? ? ? ? ? ? ? ],
?? ? ? ? ? ? ? ? ? ? "愛情":[
? ? ? ? ? ? ? ? ? ? ? ? ["name":"《小時代》","author":"楊冪"],["name":"《后來的我們》","author":"周冬雨"]
? ? ? ? ? ? ? ? ? ? ],
?? ? ? ? ? ? ? ? ? ? "科幻":[
? ? ? ? ? ? ? ? ? ? ? ? ["name":"《阿凡達》","author":"周游"],["name":"《機械公敵》","author":"威爾史密斯"],["name":"《鋼鐵俠》","author":"小羅伯特唐尼"],["name":"《精武英雄》","author":"李連杰"]
? ? ? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ? ? ? ? ]
? ? overridefuncviewDidLoad() {
? ? ? ? super.viewDidLoad()
? ? ? ? // Do any additional setup after loading the view.
? ? ? ? //設(shè)置表格的數(shù)據(jù)和代理
? ? ? ? self.table.dataSource=self;
? ? ? ? self.table.delegate=self;
? ? ? ? self.view.addSubview(self.table)
? ? }
? ? // MARK: - -------------UITableViewDataSource--------------
? ? //返回分區(qū)書
? ? funcnumberOfSections(in tableView:UITableView) ->Int{
? ? ? ? returnself.tableData.count
? ? }
? ? //根據(jù)分區(qū)下標(biāo)返回每個分區(qū)中有多少行
? ? functableView(_tableView:UITableView, numberOfRowsInSection section:Int) ->Int{
? ? ? ? //得到表格字典的key的數(shù)值
? ? ? ? letkeyArr =self.tableData.keys
? ? ? ? //通過分區(qū)下標(biāo)朽褪,得到該分區(qū)對應(yīng)的key
? ? ? ? letkey = keyArr[keyArr.index(keyArr.startIndex, offsetBy:section)]
? ? ? ? //通過key得到對應(yīng)的value,這個value是個數(shù)組
? ? ? ? letsectionArr =self.tableData[key]
? ? ? ? return(sectionArr?.count)!
? ? }
? ? //單元格賦值方法
? ? functableView(_tableView:UITableView, cellForRowAt indexPath:IndexPath) ->UITableViewCell{
? ? ? ? letidentifier ="cell"
? ? ? ? varcell = tableView.dequeueReusableCell(withIdentifier: identifier)
? ? ? ? ifcell ==nil{
? ? ? ? ? ? cell =UITableViewCell(style: .value1, reuseIdentifier: identifier)
? ? ? ? }
? ? ? ? //得到所有key的數(shù)組
? ? ? ? letkeyArr =self.tableData.keys
? ? ? ? //通過分區(qū)下標(biāo)得到分區(qū)對應(yīng)的key
? ? ? ? letkey = keyArr[keyArr.index(keyArr.startIndex, offsetBy: indexPath.section)]
? ? ? ? //根據(jù)key得到分區(qū)的數(shù)組
? ? ? ? letsectionArr =self.tableData[key]
? ? ? ? //根據(jù)行的下標(biāo)得到該行對應(yīng)的字典
? ? ? ? letrowDic = sectionArr![indexPath.row]
? ? ? ? //給cell賦值
? ? ? ? cell?.textLabel?.text= rowDic["name"]
? ? ? ? cell?.detailTextLabel?.text= rowDic["author"]
? ? ? ? returncell!
? ? }
? ? //設(shè)置分區(qū)標(biāo)題
? ? functableView(_tableView:UITableView, titleForHeaderInSection section:Int) ->String? {
? ? ? ? //獲取所有key的數(shù)組
? ? ? ? letkeyArr =self.tableData.keys
? ? ? ? //根據(jù)分區(qū)下標(biāo)獲取對應(yīng)的key
? ? ? ? letkey = keyArr[keyArr.index(keyArr.startIndex, offsetBy: section)]
? ? ? ? returnkey
? ? }
? ? // MARK: --------------------------UITableViewDelegate---------------------------
? ? //點擊單元格觸發(fā)
? ? functableView(_tableView:UITableView, didSelectRowAt indexPath:IndexPath) {
? ? ? ? //字典所有key數(shù)組
? ? ? ? letkeyArr =self.tableData.keys
? ? ? ? //選中的單元格所在的分區(qū)的key
? ? ? ? letkey = keyArr[keyArr.index(keyArr.startIndex, offsetBy: indexPath.section)]
? ? ? ? //得到分區(qū)對應(yīng)的數(shù)組
? ? ? ? letsectionArr =self.tableData[key]
? ? ? ? //得到該選中的單元格對應(yīng)的字典
? ? ? ? letmovieDic = sectionArr![indexPath.row]
? ? ? ? //將名字和演員拼接成字符串
? ? ? ? letmessage ="\(movieDic["name"]!)-\(movieDic["author"]!)"
? ? ? ? //定義alertController對象
? ? ? ? letalertVC =UIAlertController(title:nil, message: message, preferredStyle: .alert)
? ? ? ? //添加控制按鈕
? ? ? ? alertVC.addAction(UIAlertAction(title:"確定", style: .default, handler:nil))
? ? ? ? //彈出提示視圖
? ? ? ? self.present(alertVC, animated:true, completion:nil)
? ? }
? ? //設(shè)置所有單元格都可以編輯
? ? functableView(_tableView:UITableView, canEditRowAt indexPath:IndexPath) ->Bool{
? ? ? ? return true
? ? }
? ? //編輯觸發(fā)的回調(diào)
? ? functableView(_tableView:UITableView, commit editingStyle:UITableViewCellEditingStyle, forRowAt indexPath:IndexPath) {
? ? ? ? //如果是刪除操作
? ? ? ? ifeditingStyle == .delete{
? ? ? ? ? ? //得到分區(qū)對應(yīng)的key
? ? ? ? ? ? letkey =self.tableData.keys[self.tableData.keys.index(self.tableData.keys.startIndex, offsetBy: indexPath.section)]
? ? ? ? ? ? varsectionArr =self.tableData[key]
? ? ? ? ? ? sectionArr?.remove(at: indexPath.row)
? ? ? ? ? ? self.tableData.updateValue(sectionArr!, forKey: key)
? ? ? ? ? ? self.table.reloadData()
? ? ? ? }
? ? }