以下是我的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
。
提前致谢
答案 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")
}
}