ios - 使用storyboard建立tableview运行时代码运行了三次是什么情况?
PHP中文网
PHP中文网 2017-04-18 09:47:07
0
2
539
import UIKit

class TaskListController: UITableViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
       
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
        print("Test")
        return 0
    }
}
PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
巴扎黑

這段程式碼是 你的tableview load 幾次就執行幾次。設定datasource 的時候執行一次,之後 每load 都會執行一次

override func numberOfSections(in tableView: UITableView) -> Int {
       
        return 1
    }

下面這個程式碼的執行次數取決於你的 section 數目。你有幾次section 就會執行幾次,而且每次 load 之後;它都會根據你目前tableview 的section 數目 進行載入。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
        print("Test")
        return 0
    }

以上就是程式碼運行次數的邏輯。
你的問題。理論上來說,一般是你 的 stroyboard 上面有數據。即便是沒有數據,它也會運行一次(有數據則會運行多次)這是由於預設的datasource指標引起的。 再到程式碼中,你設定了 datasource ,它自然會reload。所以就執行了多次。 iOS開發,仍然建議純程式碼。

Peter_Zhu

iOS 10.1 測試運行了5 次…
感覺沒必要糾結在此,TableView 從初始化到出現在屏幕上,當中經歷了一系列的過程我們並不清楚,而且只獲取一次應該也是不夠的,蘋果應該也不會把此值存下來。
打斷點呼叫堆疊中也沒看出啥… 我的理解是 table 每次需要的時候向 delegate 要就行了,也沒啥效能影響。想刨根問底,估計只能去看源碼了…

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!