以编程方式使用swift的UITableView

我想用swift以编程方式创build一个简单的tableView,所以我在“AppDelegate.swift”上编写了这段代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) var tvc :TableViewController = TableViewController(style: UITableViewStyle.Plain) self.window!.rootViewController = tvc self.window!.backgroundColor = UIColor.whiteColor() self.window!.makeKeyAndVisible() return true } 

基本上我添加了TableViewController创build并添加到窗口。 这是TableViewController代码:

 class TableViewController: UITableViewController { init(style: UITableViewStyle) { super.init(style: style) } override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // #pragma mark - Table view data source override func numberOfSectionsInTableView(tableView: UITableView?) -> Int { return 1 } override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { return 10 } override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? { var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as UITableViewCell cell.textLabel.text = "Hello World" return cell } 

}

所以,当我尝试运行代码时,我收到以下消息:

Xcode6Projects / TableSwift / TableSwift / TableViewController.swift:12:12:致命错误:为类'TableSwift.TableViewController'使用未实现的初始化'init(nibName:bundle :)'

编译器执行时发生该错误

super.init(style:style)

有什么想法吗 ?

在Xcode 6 Beta 4中

删除

 init(style: UITableViewStyle) { super.init(style: style) } 

会做的伎俩。 这是由Obj-C和Swift之间不同的初始化行为引起的。 你已经创build了一个指定的初始化器。 如果你删除它,所有的初始值将被inheritance。

根本原因可能是在-[UITableViewController initWithStyle:]调用

 [self initWithNibName:bundle:] 

我实际上认为这可能是Obj-C类转换为Swift类的一种错误。

代替

 init(style: UITableViewStyle) { super.init(style: style) } 

你可能会发现这个方便:

 convenience init() { self.init(style: .Plain) title = "Plain Table" } 

然后,你可以调用TableViewController()来初始化。

这和写一个函数一样简单

  func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell") cell.text = self.Myarray[indexPath.row] cell.textLabel.textColor = UIColor.greenColor() cell.detailTextLabel.text = "DummyData #\(indexPath.row)" cell.detailTextLabel.textColor = UIColor.redColor() cell.imageView.image = UIImage(named:"123.png") return cell } 

单元function用途:

 override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ var cell = tableView.dequeueReusableCellWithIdentifier(kLCellIdentifier) as UITableViewCell! if !cell { cell = UITableViewCell(style:.Default, reuseIdentifier: kLCellIdentifier) } cell.backgroundColor = UIColor.clearColor() cell.textLabel.text = arrData[indexPath.row] cell.image = UIImage(named: "\(arrImage[indexPath.row])") cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton cell.selectionStyle = UITableViewCellSelectionStyle.None return cell }