我正在嘗試reloadTableView()從 class繼承一個函式HomeViewController。該函式僅用于重新加載 tableView。
這是宣告了 reload 函式的 HomeViewController。
class HomeViewController: UIViewController {
func reloadTableView(){
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
我想從另一個 UIViewController 類呼叫這個多載函式。誰能幫助我如何繼承和使用此功能
uj5u.com熱心網友回復:
我不確定你是否真的需要在這里繼承,但如果你愿意,你可以這樣做class AnotherViewController: HomeViewController:現在你可以reloadTableView()在這堂課中使用你的了。
uj5u.com熱心網友回復:
看起來tableView沒有特別歸因于HomeViewController。因此,直接添加 TableView 類ViewController可能是一個解決方案。但是,如果沒有看到你也想使用的功能HomeViewController,TableView這可能不起作用。HomeViewController
像這樣的東西可以作業:
class OtherViewController: UIViewController {
var tableView = TableView()
func reloadTableView(){
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
uj5u.com熱心網友回復:
使用Protocol Extension是滿足您需求的最佳選擇。
檢查下面的示例代碼
import UIKit
protocol TableProtocols {
func reloadTableView()
}
extension TableProtocols {
//implement your common code here
func reloadTableView() {
print("Called: \(#function)")
}
}
class SomeViewController1: UIViewController, TableProtocols {
func someFunction() {
//just call that `reloadTableView` method
reloadTableView()
}
}
class SomeViewController2: UIViewController, TableProtocols {
func someFunction() {
//just call that `reloadTableView` method
reloadTableView()
}
}
let viewController1 = SomeViewController1()
viewController1.someFunction()
let viewController2 = SomeViewController2()
viewController2.someFunction()
希望這能滿足您的需求。如果是的話,別忘了把它標記為正確答案。??
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/523301.html
標籤:迅速功能合适的视图遗产
下一篇:c#-查找硬碟上檔案的完整路徑
