kev*_*eon 1 xcode uitableview ios swift
如果我使用override关键字,以下代码可以正常工作,因为Xcode坚持认为我...但是如果我删除了override关键字(如下面数据源扩展中所示),我会遇到构建错误.我看到人们在整个地方以完全相同的方式组织他们的代码,但他们没有使用override关键字...任何帮助?我的意思是,显然如果我只是添加override关键字,一切都很好,但我想知道"为什么?".这是Swift 1.2中的新功能,我只是看到一堆旧代码?
import UIKit
class EventsTableViewController: UITableViewController {
var events = [Event]()
override func viewDidLoad() {
super.viewDidLoad()
var newEvent = Event(id: 1, type: "Birthday Party", city: "Dallas", state: "TX", date: "Saturday, July 12, 2015", time: "6:00PM - 11:00PM", details: "Some really cool stuff! Sed posuere consectetur est at lobortis. Maecenas faucibus mollis interdum. Maecenas sed diam eget risus varius blandit sit amet non magna. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod.")
events.append(newEvent)
newEvent = Event(id: 2, type: "Christmas Party", city: "Houston", state: "TX", date: "Friday, December 11, 2015", time: "6:00PM - 11:00PM", details: "Santa Clause and what not")
events.append(newEvent)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// cast a var as destination View Controller
let eventDetail = segue.destinationViewController as! EventDetialViewController
// Pass the selected event over
if let indexPath = tableView.indexPathForSelectedRow() {
let selectedEvent = events[indexPath.row]
eventDetail.currentEvent = selectedEvent
}
}
}
// MARK: - Table view data source
extension EventsTableViewController: UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return events.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("eventCell", forIndexPath: indexPath) as! UITableViewCell
let currentEvent = events[indexPath.row]
cell.textLabel?.text = "\(currentEvent.type) - \(currentEvent.date)"
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
如果视图控制器继承自UITableViewController,则需要使用override关键字,因为Apple已经在UITableViewController中实现了这些方法,并且您正在覆盖它们.
如果您的视图控制器继承自UIViewController,并且符合UITableViewDataSource和UITableViewDelegate协议,那么您不需要override关键字,因为您提供了协议方法的第一个实现.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |