[IOSS]UITableView分组
DEMO:http://download.csdn.net/detail/u012881779/9233421
应用入口(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() var selectSection = NSInteger() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = UITableViewCellSeparatorStyle.None selectSection = -1 //数据模拟 for(var i = 0 ; i < 10 ; i++ ){ let dataDict = NSMutableDictionary() //整型->字符串 var title = String(i) title.appendContentsOf("_section") //浮点->字符串 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") let tempMarr = NSMutableArray() for(var j = 0 ; j < 5 ; j++){ let sectionDict = NSMutableDictionary() var titlej = String(j) titlej.appendContentsOf("_row") let doublej = 41.32 let doubleStringj = NSString(format: "%f",doublej) sectionDict.setObject(titlej,forKey: "title") sectionDict.setObject(doubleStringj,forKey: "double") sectionDict.setObject(String(j),forKey: "id") tempMarr.addObject(sectionDict) } dataDict.setObject(tempMarr,forKey: "section") dataArr.addObject(dataDict) } } //组数 func numberOfSectionsInTableView(tableView: UITableView) -> Int { return dataArr.count } //每组cell数 func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int { if(selectSection == -1){ return 1 }else{ if(selectSection == section){ return dataArr.objectAtIndex(selectSection).objectForKey("section")!.count + 1 }else{ return 1 } } } //赋值 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 cell.selectionStyle = UITableViewCellSelectionStyle.None if(selectSection == indexPath.section){ let selectDict = dataArr.objectAtIndex(indexPath.section) let sectionArr = selectDict.objectForKey("section") if(indexPath.row == 0){ cell.assignmentFromDictionary(dataArr.objectAtIndex(indexPath.section) as! NSDictionary,andMark: 0) }else{ cell.assignmentFromDictionary(sectionArr!.objectAtIndex(indexPath.row-1) as! NSDictionary,andMark: 1) } }else{ cell.assignmentFromDictionary(dataArr.objectAtIndex(indexPath.section) as! NSDictionary,andMark: 0) } return cell } //cell高度 func tableView(tableView: UITableView,heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 60.0 } //选中cell func tableView(tableView: UITableView,didSelectRowAtIndexPath indexPath: NSIndexPath) { if(selectSection == indexPath.section && indexPath.row == 0){ selectSection = -1 }else{ selectSection = indexPath.section } 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() @IBOutlet weak var sectionView: UIView! @IBOutlet weak var rowView: UIView! @IBOutlet weak var rowImgview: UIImageView! @IBOutlet weak var rowIdLab: UILabel! @IBOutlet weak var rowTitleLab: UILabel! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(selected: Bool,animated: Bool) { super.setSelected(selected,animated: animated) } //赋值 func assignmentFromDictionary(valueDict : NSDictionary,andMark:NSInteger){ dataDict = valueDict if(andMark == 1){ sectionView.hidden = true rowView.hidden = false rowIdLab.text = valueDict.valueForKey("id") as? String rowTitleLab.text = valueDict.objectForKey("title") as? String }else{ sectionView.hidden = false rowView.hidden = true idLab.text = valueDict.valueForKey("id") as? String titleLab.text = valueDict.objectForKey("title") as? String } } }
示意图: