搜:
swift tableview datasource outside
参考:
看起来是:
针对于UITableViewDataSource(和UITableViewDelegate)
去创建一个类
然后UITableView中,new一个实例,然后设置到delegate和datasource上
TeamTableViewData.swift
import UIKit struct TeamItem { var teamID:String = "" var nameStr:String = "" } class TeamTableViewData: UIViewController, UITableViewDataSource, UITableViewDelegate{ var teamItemArr:[TeamItem] = [TeamItem]() func updateTeamData(){ var teamItem:TeamItem teamItem = TeamItem() teamItem.nameStr = “team1" teamItem.teamID = "TeamID_team1" teamItemArr.append(teamItem) teamItem = TeamItem() teamItem.nameStr = “team2" teamItem.teamID = "TeamID_team2" teamItemArr.append(teamItem) } /*************************************************************************** * UITableViewDataSource functions ***************************************************************************/ func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //print("numberOfRowsInSection indexPath = \(indexPath)") return teamItemArr.count } func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { //print("heightForRowAtIndexPath indexPath = \(indexPath)") return HeightSwitchTeamCell } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { print("cellForRowAtIndexPath indexPath = \(indexPath)") let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "StrIdSwitchTeamTableViewCell") cell.backgroundColor = UIColor.whiteColor() cell.selectionStyle = UITableViewCellSelectionStyle.Blue cell.accessoryType = UITableViewCellAccessoryType.None cell.accessoryView = nil; cell.detailTextLabel?.text = nil cell.textLabel?.font = UIFont.boldSystemFontOfSize(14) cell.textLabel?.textAlignment = NSTextAlignment.Left cell.textLabel?.textColor = UIColor.grayColor() cell.textLabel?.text = teamItemArr[indexPath.row].nameStr cell.imageView?.image = UIImage(named: "add_conversation") return cell } /*************************************************************************** * UITableViewDelegate functions ***************************************************************************/ func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { print("didSelectRowAtIndexPath indexPath = \(indexPath)") } }
别的文件中初始化一个类:
var gTeamTableViewData = TeamTableViewData()
SwitchTeamTableView.swift
import UIKit class SwitchTeamTableView: UIView{ var switchTeamTableView:UITableView = UITableView() var switchTeamFrame:CGRect = CGRectZero override init(frame:CGRect) { switchTeamFrame = frame switchTeamTableView = UITableView(frame: CGRectMake( 0, 0, switchTeamFrame.width, switchTeamFrame.height) ) print("switchTeamTableView.frame=\(switchTeamTableView.frame)") super.init(frame:switchTeamFrame) switchTeamTableView.delegate = gTeamTableViewData switchTeamTableView.dataSource = gTeamTableViewData switchTeamTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "StrIdSwitchTeamTableViewCell") self.addSubview(switchTeamTableView) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
即可。
转载请注明:在路上 » 【已解决】swift给UITableView设置外部的数据源