[Swift]UITableView自定義cell
阿新 • • 發佈:2018-12-23
應用入口(AppDelegate.swift)
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window = UIWindow(frame: UIScreen.mainScreen().bounds) window?.backgroundColor = UIColor.whiteColor() let viewController = DMViewController() let nav = UINavigationController(rootViewController: viewController) nav.navigationBarHidden = true window?.rootViewController = nav window?.makeKeyAndVisible() return true } }
列表控制器(DMViewController.swift)
import UIKit class DMViewController: UIViewController , UITableViewDelegate , UITableViewDataSource{ @IBOutlet weak var tableView: UITableView! var dataArr = NSMutableArray() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self //資料模擬 for(var i = 0 ; i < 20 ; i++ ){ let dataDict = NSMutableDictionary() //整型->字串 var title = String(i) title.appendContentsOf("abc") //浮點->字串 let double = 20.12 let doubleString = NSString(format: "%f", double) dataDict.setObject(title, forKey: "title") dataDict.setObject(doubleString, forKey: "double") dataDict.setObject(String(i), forKey: "id") dataArr.addObject(dataDict) } } //組數 func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } //每組cell數 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return dataArr.count } //賦值 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { /*預設Cell let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier:"cell"); cell.textLabel!.text = "test1" */ //自定義cell let cellIdentifier = "DMTableViewCell" self.tableView!.registerNib(UINib(nibName: "DMTableViewCell", bundle:nil), forCellReuseIdentifier: cellIdentifier) let cell : DMTableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! DMTableViewCell if(dataArr.count > indexPath.row){ cell.assignmentFromDictionary(dataArr.objectAtIndex(indexPath.row) as! NSDictionary) } return cell } //cell高度 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 60.0 } //選中cell func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { print("選中某個cell"); } /**/ //能否編輯 func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { return true } //cell編輯模式-這裡選擇顯示Delete func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { return UITableViewCellEditingStyle.Delete } //更改“Delete”為“刪除” func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? { return "刪除" } //對選中的cell根據editingStyle進行操作 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if(editingStyle == UITableViewCellEditingStyle.Delete){ //對資料進行操作 dataArr.removeObjectAtIndex(indexPath.row) tableView.reloadData() } } }
自定義cell(DMTableViewCell.swift)
import UIKit class DMTableViewCell: UITableViewCell { @IBOutlet weak var leftImagview: UIImageView! @IBOutlet weak var idLab: UILabel! @IBOutlet weak var titleLab: UILabel! var dataDict = NSDictionary() override func awakeFromNib() { super.awakeFromNib() // Initialization code } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } //賦值 func assignmentFromDictionary(valueDict : NSDictionary){ dataDict = valueDict idLab.text = valueDict.valueForKey("id") as? String titleLab.text = valueDict.objectForKey("title") as? String } }
示意圖: