簡體   English   中英

快速比較不同行中的兩個標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM