2016-08-05 38 views
2

這是我的tableView並且想要隱藏「事件日」 「我該怎麼做?如何在UISwitch更改後隱藏某個部分

希望你能幫助我。

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數據。

在此先感謝

回答

1

試圖改變這樣的代碼,添加一個動作你UISwitchValueChanged事件並重新加載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" 
} 
+0

是好工作。與山羊一起回答了一個好的開始。 –

+0

@xyzcode你可以用新的代碼編輯問題或者添加新的問題,併發送到這裏的鏈接,所以它會很容易理解。 :) –

1

您可以通過下面的代碼更改開關動作已經更爲優化的重載解決方案

@IBAction func switchValueChange(sender: UISwitch) { 
    //tableView.reloadData() 
    tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .None) 
} 
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") 

    } 
}