[IOSS]UITableView分组

前端之家收集整理的这篇文章主要介绍了[IOSS]UITableView分组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

[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
        }
    }
}

示意图:


原文链接:https://www.f2er.com/swift/325529.html

猜你在找的Swift相关文章