2016-07-24 35 views
1

我有一個UITableView包含用戶添加的動態單元格。每個單元有一個UILabel和一個UISwitch。開關的默認狀態爲ON。每當用戶添加它時,我將這些值保存在CoreData模型(UILabel,字符串爲& UISwitch,作爲Bool)。 每當用戶切換交換機時,我想更新/存儲CoreData模型中相同單元中的標籤值對應的交換機的狀態。我已經將標記(switch.tag = indexPath.row)添加到行中的每個開關,並且可以通過在我的cellChanged函數中使用sender.tag來訪問它。但是我無法獲取切換開關所在行的標籤。如果我能以某種方式獲取與切換開關相對應的標籤值,則可以運行for循環在CoreData模型中查找該標籤值,然後設置UISwitch的狀態。由於我使用的是Swift語言,如果您可以使用相同的語言解釋代碼,我將不勝感激。如何在Swift中的CoreData模型中保存動態創建的UISwitch的更改狀態?

+0

爲什麼你需要存儲在CoreData的標籤,做這些標籤改變? –

+0

這些標籤存儲用戶選擇的時間值。 –

+0

夠公平的。我可以假設你存儲'NSDate's? –

回答

0

這爲我工作:

func switchTapped(sender:UISwitch) { 
let switchPosition = sender.convertPoint(CGPointZero, toView: self.tableView) 
let indexPath = self.tableView.indexPathForRowAtPoint(switchPosition) 

} 
0

更好的模式可以在單元中創建一個協議。像

@protocol MyCellDelegate{ 
func cellSwitchChanged(forCell: MyCell, toValue: Bool, withLabel: String?) 
} 

class MyCell: UITableVeiwCell{ 
weak veer delegate: MyCellDelegate 
. 
. 
. 

@IBaction handleSwitchChanged(sender: UISwitch){ 
self.delegate?.cellSwitchChanged(forCell: self, toValue: sender.value, withLabel: self.lblName.text) 
} 
} 

而在你的單元格爲行索引路徑,分配你的VC委託的單元格。並重寫此方法。

因此,每當開關改變時,視圖控制器將獲得單元格引用,開關值和文本標籤。那麼您可以在這裏進行核心數據更新操作。

相關問題