2015-03-30 52 views
4

各位程序员,您好!我有一个挑战,我需要帮助。我使用自定义样式单元格建立了一个表格。开关中的TableView中的UISwitch

这个单元格只有一个LabelUISwitch。标签显示一个名称,交换机显示它们是否是管理员。这工作完美。我的挑战是如何在交换机发生变化时将代码作出反应。

所以,如果我点击开关将其从关闭更改为在哪里我可以得到它打印人名?如果我能得到打印的名字,我可以自己做php/sql代码。谢谢,这里是我的代码片段。

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

    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as UITableViewCell 
    let admin = self.admin[indexPath.row] 

    let text1a = admin.FirstName 
    let text1aa = " " 

    let text1b = admin.LastName 
    let text1 = text1a + text1aa + text1b 
    (cell.contentView.viewWithTag(1) as UILabel).text = text1 

    if admin.admin == "yes" { 
     (cell.contentView.viewWithTag(2) as UISwitch).setOn(true, animated:true) 

    } else if admin.admin == "no" { 
     (cell.contentView.viewWithTag(2) as UISwitch).setOn(false, animated:true) 
    } 

    return cell 
} 
+0

我现在试着得到同样的东西。我已经在UITableViewCell里面实现了IBAction来获取开关值,但是我不知道从TableViewController中获取值的开关值是什么...我缺少什么?我应该在cellForRowAtIndexPath中调用一些东西吗? – 2015-09-15 13:21:50

回答

7

您的自定义表格视图单元格设置一个行动处理变化的UISwitch和应对它的变化,请看下面的代码:

class CustomTableViewCell: UITableViewCell { 

    @IBOutlet weak var label: UILabel! 

    @IBAction func statusChanged(sender: UISwitch) { 
     self.label.text = sender.on ? "On" : "Off" 
    } 
} 

上面的例子只是用来要更改关于UISwitch状态的UILabel的文本,您必须根据您的要求进行更改。我希望这对你有所帮助。

+0

非常感谢Victor,花了我几分钟的时间才明白我实际上必须指定自定义类(有一段时间),但在此之后它就像一个魅力。再次感谢! – 2015-04-01 16:08:12

+0

@EricConsford不客气。请接受答案,如果它解决了你的问题。 – 2015-04-01 16:26:46

+0

完成并再次感谢你 – 2015-04-01 17:23:00

0

您需要监听UISwitch的.ValueChanged,在YOUR_CUSTOM_CELL中做出一些决定。在那里你可以捕捉到“打印”你的数据。

0

埃里克,

同时在tableview中的生命周期的某个时刻,你需要配置每个UISwitch与目标/行动的表格单元格。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/addTarget:action:forControlEvents

action告诉UISwitch实例什么方法当开关被用户翻转它应该调用。 target告诉UISwitch实例托管该方法的对象是什么。

通常,您将使用UITableViewController(或UIViewController)子类作为目标。