UItableView委托在swift中

时间:2015-10-22 10:13:56

标签: uitableview delegates swift2

这是我的自定义UITableViewController,我添加了任何其他代码,并且委托方法被调用了五次

import UIKit

class SettingsViewController: UITableViewController {

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        print("numberOfSectionsInTableView called")
        return 2
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        print("numberOfRowsInSection called for section => \(section)")
        return 2
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = UITableViewCell(style: UITableViewCellStyle.Value2, reuseIdentifier: nil)

        cell.textLabel?.text = "hey"
        return cell
    }

}

日志:

调用numberOfSectionsInTableView numberOfSectionsInTableView调用 numberOfRowsInSection调用section => 0 numberOfSectionsInTableView调用 numberOfRowsInSection调用section => 0 numberOfSectionsInTableView调用 numberOfRowsInSection调用section => 0 numberOfSectionsInTableView调用 numberOfRowsInSection调用section => 0 numberOfSectionsInTableView调用 numberOfRowsInSection调用section => 0

修改

它是我从appDelegate启动的唯一一个类:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    if let window = window {

        let nav = UINavigationController()
        nav.viewControllers = [Test()]
        window.rootViewController = nav
        window.makeKeyAndVisible()
    }
    return true
}

1 个答案:

答案 0 :(得分:0)

表视图数据源方法可能会被多次调用。它无法保证被调用的次数。由于UITableView的实现,有许多情况下某些委托/数据源方法将被调用两次或更多次,因为表视图必须刷新一些东西。这包括重新加载表格视图,更改表格标题视图等情况。因此,您可能希望在这种情况下检查您的实施!