当UISwitch被更改时,如何隐藏部分

时间:2016-08-05 09:58:48

标签: ios swift uitableview switch-statement tableview

以下是我的tableView,并希望隐藏“ eventdays ”部分 我怎么能这样做?

希望你能帮助我。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    // set data within item list
    self.going = ["You can go?","Whos going"]
    self.eventdays = ["Monday", "Sunday", "Wednesday"]
    self.others = ["Bread", "Butter", "Paneer"]

    // set table view delegate and data source
    self.myTableView.delegate = self
    self.myTableView.dataSource = self
    }

   override func didReceiveMemoryWarning() {
     super.didReceiveMemoryWarning()
     // Dispose of any resources that can be recreated.
   }



  // Mark: - Table view data source and delegate

  // set number of sections within table view
 func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 3
 }

 // set number for rows for each setion
 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        return self.going.count
    }
    if section == 1 {
        return self.eventdays.count
    }
    if section == 2 {
        return self.others.count
    }

    return 0
 }

 // set header title for each section
 func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    if section == 0 {
        return "Can Go?"
    }
    if section == 1 {
        return "Days"
    }
    if section == 2 {
        return "Others"
    }

    return "Default Title"
}

// set cell content for each row
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // deque reusable cell
    let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell
    let row = indexPath.row



    //Configure the switches for swipe options
    let teilnehmenSwitch = UISwitch(frame:CGRectMake(150, 300, 0, 0));
    teilnehmenSwitch.on = false

    let eventDaySwitch = UISwitch(frame:CGRectMake(150, 300, 0, 0));
    eventDaySwitch.on = false




    switch(indexPath.section){
    case 0:
        cell.textLabel?.text = going[row]
        if row == 0 {

            cell.accessoryView = teilnehmenSwitch

        }

    case 1:
        cell.textLabel?.text = eventdays[row]
        cell.accessoryView = eventDaySwitch
    case 2:
        cell.textLabel?.text = others[row]
    default:
        cell.textLabel?.text="Others"
    }

    // return cell
    return cell
 }

如何找出哪些开关已更改,以便我可以将数据保存在DataBase

提前致谢

3 个答案:

答案 0 :(得分:1)

您可以通过以下代码更改切换操作,以获得更优化的重新加载解决方案

@IBAction func switchValueChange(sender: UISwitch) {
    //tableView.reloadData()
    tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .None)
} 

答案 1 :(得分:0)

尝试以这种方式更改代码,在UISwitch ValueChanged事件中添加一项操作,然后重新加载tableView

@IBAction func switchValueChange(sender: UISwitch) {
    tableView.reloadData()
}    

现在以这种方式更改您的UITableViewDataSource方法

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    if mySwitch.on {
        return 3
    }
    else {
        return 2
    }
}

// set number for rows for each setion
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        return self.going.count
    }
    if section == 1 {
        if mySwitch.on {
            return self.eventdays.count
        }
        else {
            return self.others.count
        }
    }
    if section == 2 {
        return self.others.count
    }

    return 0
}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    if section == 0 {
        return "Can Go?"
    }
    if section == 1 {
        if mySwitch.on {
            return "Days"
        }
        else {
            return "Others"
        }
    }
    if section == 2 {
        return "Others"
    }
    return "Default Title"
}

答案 2 :(得分:0)

var  teilnehmenSwitch = UISwitch()
var  eventDaySwitch = UISwitch()

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

teilnehmenSwitch = UISwitch(frame:CGRectMake(150, 300, 0, 0));
teilnehmenSwitch.addTarget(self, action: #selector(SettingVC.switchDidChangeteilnehmenSwitch(_:)), forControlEvents: .ValueChanged)
teilnehmenSwitch.on = false

eventDaySwitch = UISwitch(frame:CGRectMake(150, 300, 0, 0));
eventDaySwitch.addTarget(self, action: #selector(SettingVC.switcheEventDaySwitch(_:)), forControlEvents: .ValueChanged)
eventDaySwitch.on = false

}

func switchDidChangeteilnehmenSwitch(sender:UISwitch!)
{
    if (sender.on == true){
        print("on")
    }
    else{
        print("off")

    }
}

func switcheEventDaySwitch(sender:UISwitch!)
{
    if (sender.on == true){
        print("on")

    }
    else{
        print("off")

    }
}