2015-03-30 26 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)子類作爲目標。