[英]Compare two labels from different rows in swift
請問我,如何更好地比較Tableview中不同行中的兩個相同(標簽具有名稱“ labelNumber”)標簽
例如:我知道,在第0行的標簽是“ 06”(整數),在下一個單元格(第1行)中的標簽是“ 07”。 因此,“ 07”>“ 06”。 如何與快速語言進行比較?
謝謝!
比較存儲在數據數組中的值:
if dataArray[0].myIntegerValue > dataArray[1].myIntegerValue {
// Do your stuff
}
編輯:這假定您的數據存儲為該Int作為屬性的對象。
正如其他人所說,不要那樣做。 在MVC設計模式中,標簽是視圖。 它們用於顯示數據,而不是存儲數據。
嘗試從表視圖標簽中讀取值特別糟糕,因為當表視圖滾動時,屏幕外的單元格將被回收並且其視圖中的值將被丟棄。 您需要將數據保存到模型對象。 (數組可以很好地保存表視圖數據,而數組可以用於分段表視圖。)
如@vadian所述 ,您不應使用填充的UI對數據執行計算。
但這是用於比較2個UITableViewCell(s)
的值的代碼
class Controller: UITableViewController {
func equals(indexA: NSIndexPath, indexB: NSIndexPath) -> Bool? {
guard let
cellA = tableView.cellForRowAtIndexPath(indexA),
cellB = tableView.cellForRowAtIndexPath(indexB) else { return nil }
return cellA.textLabel?.text == cellB.textLabel?.text
}
}
考慮一下您如何填充單元格。 我想您正在使用某些模型值。 因此,只需比較用於填充單元格的模型值即可。
大概是這樣的
class Controller: UITableViewController {
var data: [Int] = [] // ....
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCellWithIdentifier("YourCellID") else { fatalError("No cell found with this id: 'YourCellID'")}
cell.textLabel?.text = String(data[indexPath.row])
return cell
}
func equals(indexA: NSIndexPath, indexB: NSIndexPath) -> Bool? {
return data[indexA.row] == data[indexB.row]
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.