swift UI控件的综合应用

import UIKit


enum AddTimerType : Int{

    case onTime = 0

    case offTime = 1

    case onAndOffTime = 2

}


class TTAddTimerViewController: UIViewController,TTInterceptorProtocol,UITableViewDataSource,UITableViewDelegate,TTSelectTableViewCellDelegate {


    var addTimeType:AddTimerType!

    var lblOnTime:UILabel!

    var lblOnTimeTip:UILabel!

    var lblOffTime:UILabel!

    var lblOffTimeTip:UILabel!

    var btnOntime:UIButton!

    var btnOfftime:UIButton!

    var datePicker:UIDatePicker!

    var offdatePicker:UIDatePicker!

    var scrollView:UIScrollView!

    var clickCount :Int!

    var repeatView :UIView!

    var weekButtonArr = NSMutableArray()

    var showSelectWeekArr = NSMutableArray()

    var lblSelectWeek:UILabel!

    var timeSelectView:UIView!

    var offSelectView:UIView!


    var isShowDateTime:Bool = false

    var isShowSection2DateTime:Bool = false

    

    var currentDate:String?

    

    var tableView:UITableView!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        self.view.backgroundColor = TTColor("#f2f2f2")

        self.navigationItem.title = "Add List"

        

        var dateFormatter = NSDateFormatter()

        dateFormatter.dateFormat = "HH:mm"

        self.currentDate = dateFormatter.stringFromDate(NSDate())

        

        self.tableView = UITableView(frame: self.view.bounds, style: UITableViewStyle.Plain)

        self.tableView.autoresizingMask = .FlexibleHeight | .FlexibleWidth

        self.tableView.delegate = self

        self.tableView.dataSource = self

        self.view.addSubview(self.tableView)

        

        self.tableView.tableFooterView = footerView()

        

    }


    //MARK:-  DataSource

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {

        if self.addTimeType == .onAndOffTime{

            return 2

        }

        return 1

    }

    

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if section == 0{

            return (self.isShowDateTime == true) ? 1 : 0

        }else

        {

            return (self.isShowSection2DateTime == true) ? 1:0

        }

        

    }

    

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        

        let cell = TTSelectTableViewCell()

        cell.delegate = self

        return cell

    }

    

    //MARK:- delegate

    

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        var headView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height))

        let titleLabel = UILabel(frame: CGRectMake(10, 0, 100, 50))

            titleLabel.font = UIFont.boldSystemFontOfSize(18)

            titleLabel.textColor = tableViewCellDefaultTextColor

            titleLabel.text = section == 0 ? "On time" : "Off time"

            headView.addSubview(titleLabel)

        if section == 0{

            if self.btnOntime == nil{

                self.btnOntime = UIButton(frame: CGRectMake(headView.frame.size.width - 100,0, 100, 50))

                self.btnOntime.titleLabel?.font = UIFont.systemFontOfSize(14)

                self.btnOntime.setTitle(self.currentDate, forState: UIControlState.Normal)

                self.btnOntime.imageEdgeInsets = UIEdgeInsetsMake(0,80, 0, 0)

                self.btnOntime.tag = 10086 + section

                self.btnOntime.setImage(UIImage(named: "smartmodel_nextBlue"), forState: UIControlState.Normal)

                self.btnOntime.setImage(UIImage(named: "smartmodel_downBlue"), forState: UIControlState.Selected)

                self.btnOntime.setTitleColor(appThemeColor, forState: UIControlState.Normal)

                self.btnOntime.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleBottomMargin

                self.btnOntime.addTarget(self, action: "chooseTimeAction:", forControlEvents: UIControlEvents.TouchUpInside)

            }

            headView.addSubview(self.btnOntime)

        }else if section == 1{

            if self.btnOfftime == nil{

                self.btnOfftime = UIButton(frame: CGRectMake(headView.frame.size.width - 100,0, 100, 50))

                self.btnOfftime.titleLabel?.font = UIFont.systemFontOfSize(14)

                self.btnOfftime.setTitle(self.currentDate, forState: UIControlState.Normal)

                self.btnOfftime.imageEdgeInsets = UIEdgeInsetsMake(0,80, 0, 0)

                self.btnOfftime.tag = 10086 + section

                self.btnOfftime.setImage(UIImage(named: "smartmodel_nextBlue"), forState: UIControlState.Normal)

                self.btnOfftime.setImage(UIImage(named: "smartmodel_downBlue"), forState: UIControlState.Selected)

                self.btnOfftime.setTitleColor(appThemeColor, forState: UIControlState.Normal)

                self.btnOfftime.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleBottomMargin

                self.btnOfftime.addTarget(self, action: "chooseTimeAction:", forControlEvents: UIControlEvents.TouchUpInside)

            }

            headView.addSubview(self.btnOfftime)

        }

        

        let line = UIView(frame: CGRectMake(0, 49, headView.bounds.width, 1))

        line.backgroundColor = defaultLineColor

        headView.addSubview(line)

        

        return headView

    }

    

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

        return 50

    }

    

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

        return 212

    }

    

    func footerView() -> UIView{

        var footerView = UIView()

        let footerViewX = CGFloat(0)

        let footerViewY = CGFloat(0)

        let footerViewW = self.view.frame.width

        var footerViewH:CGFloat!

        if self.addTimeType == .onAndOffTime{

            footerViewH = 212

        }else{

            

            footerViewH = self.view.frame.height - 326

        }

        footerView.frame = CGRectMake( footerViewX, footerViewY, footerViewW, footerViewH)

        

        footerView.backgroundColor = TTColor("#f2f2f2")

        self.repeatView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, 50))

        self.repeatView.backgroundColor = UIColor.whiteColor()

        

        var lblRepeat = UILabel(frame: CGRectMake(16,0, 100,50))

        lblRepeat.text = "Repeat"

        lblRepeat.font = UIFont.systemFontOfSize(20)

        repeatView.addSubview(lblRepeat)

        footerView.addSubview(self.repeatView)

        

        self.lblSelectWeek = UILabel(frame: CGRectMake(lblRepeat.frame.width, 0, self.repeatView.frame.width - lblRepeat.frame.width - 10, 50))

        self.repeatView.addSubview(self.lblSelectWeek)

        self.lblSelectWeek.textColor = appThemeColor

        self.lblSelectWeek.textAlignment = NSTextAlignment.Right

        

        

        //创建星期的按钮

        let btnWidth = (self.view.frame.size.width - 40)/7

        var weekArr = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]

        let count = weekArr.count

        var weekBtnYAddH = CGFloat?()

        for i in 0..<count {

            var btnWeek = UIButton(frame: CGRectMake(CGFloat(i) * btnWidth + 20.0 , CGRectGetMaxY(repeatView.frame)+20, btnWidth, btnWidth))

            btnWeek.backgroundColor = UIColor.whiteColor()

            btnWeek.tag = 100 + i;

            //btnWeek.titleLabel?.backgroundColor = UIColor.grayColor()

            btnWeek.setTitle(weekArr[i], forState: UIControlState.Normal)

            btnWeek.setTitleColor(TTColor("#999999"), forState: UIControlState.Normal)

            btnWeek.setTitleColor(appThemeColor, forState: UIControlState.Highlighted)

            btnWeek.addTarget(self, action: "weekBtnAction:", forControlEvents: UIControlEvents.TouchUpInside)

            weekButtonArr.addObject(btnWeek)

            //获取星期按钮的Y + height的值

            weekBtnYAddH = btnWeek.frame.origin.y + btnWeek.frame.size.height;

            

            footerView.addSubview(btnWeek)

        }

        

        //Save 按钮的创建

        var contentH = footerView.frame.height

        var btnSave = UIButton(frame: CGRectMake(0,contentH - 46, self.view.frame.size.width, 46))

        btnSave.backgroundColor = appThemeColor

        btnSave.setTitle("Save", forState: UIControlState.Normal)

        

        footerView.addSubview(btnSave)

        

        return footerView

    }

    

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

     //MARK:- TTSelectTableViewCellDelegate

  

    func  datePickerChange(datePicker:UIDatePicker,cell:TTSelectTableViewCell){

        var indexPath = self.tableView.indexPathForCell(cell)

        var dateFormatter = NSDateFormatter()

        dateFormatter.dateFormat = "HH:mm"

        var dateString = dateFormatter.stringFromDate(datePicker.date)

        

        if indexPath?.section == 0{

            self.btnOntime.setTitle(dateString, forState: UIControlState.Normal)

        }else{

            self.btnOfftime.setTitle(dateString, forState: UIControlState.Normal)

        }

    }


    

    //MARK:- Delegate or DataSource

    

    //MARK:- NSNotification Method

    

    //MARK:- Action Method

    

    func chooseTimeAction(sender:UIButton){

        let section = sender.tag - 10086

        if section == 0{

            if !sender.selected {

                self.isShowDateTime = true

            }else{

                self.isShowDateTime = false

            }

            self.tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: UITableViewRowAnimation.Automatic)

        }else{

            if !sender.selected {

                self.isShowSection2DateTime = true

            }else{

                self.isShowSection2DateTime = false

            }


            self.tableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Fade)

        }

        sender.selected = !sender.selected

    }

    

    func weekBtnAction(btn:UIButton){

        if btn.selected == false{

            btn.backgroundColor = appThemeColor

            btn.setTitleColor(TTColor("#ffffff"), forState: UIControlState.Normal)

            btn.selected = true

            if let buttonTitle = btn.titleLabel?.text{

                self.showSelectWeekArr.addObject(buttonTitle)

            }

            

        }else

        {

            btn.backgroundColor = UIColor.whiteColor()

            btn.setTitleColor(TTColor("#999999"), forState: UIControlState.Normal)

            btn.selected = false

            if let buttonTitle = btn.titleLabel?.text{

                if self.showSelectWeekArr.containsObject(buttonTitle){

                    self.showSelectWeekArr.removeObject(buttonTitle)

                }

            }

           

        }

        let seletWeekTitle = self.showSelectWeekArr.componentsJoinedByString(" ")

        self.lblSelectWeek.text = seletWeekTitle

    }

    //MARK:- Private Method


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值