我已經編寫了一個函數,該函數遍歷給定UIView的超級視圖以獲取對特定UIView子類(如果存在的話)(UITableView)的引用。這種方式很好地使用了命令式的風格,但它似乎是一個問題,很適合'面向鐵路的編程'。由於我仍然對功能有所瞭解,任何人都可以提出這個功能的更優雅的功能版本嗎?使用函數搜索UIView層次Swift
func findTableView(var view: UIView) -> UITableView? {
var table: UITableView? = nil
while table == nil {
guard let superView = view.superview else { return nil }
view = superView
table = view as? UITableView
}
return table
}
就是這樣!我知道如果會更簡潔。我不認爲你能詳細說明這一點嗎?我有一個輕微的概念性問題,理解代碼正在做什麼。 – rustproofFish
更新了答案。 – rintaro
謝謝!當您看到擴展版本時顯而易見。 flatmap()的使用令我感到困惑,但現在我意識到,當您用完超級視圖時,這是一種處理零事件的非常狡猾的方式。 – rustproofFish