以编程方式使用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 }