为什么我看不到我的 TableViewRowActions 按钮(在 swift 中)?
Why can't I see my TableViewRowActions buttons (in swift)?
我想在我的表格视图中的所有单元格上实现滑动动作。
阅读 4 个不同的教程后,我不明白为什么我的操作按钮没有出现:我可以执行 "swipe",我可以在按钮应该出现的地方看到空白 space。甚至我的处理程序都不会在点击时调用...
class RestaurantsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var mTableView: UITableView!
private var restosList = [Restaurant]()
override func viewDidLoad() {
super.viewDidLoad()
self.mTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
let url = "http://xxxxxxxxxx"
Alamofire.request(.GET, url, parameters: ["service" : "restaurants"])
.responseArray { (response: [Restaurant]?, error: NSError?) in
if let response = response {
for oneResto in response {
self.restosList.append(oneResto)
}
}
self.mTableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.mTableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
cell.textLabel?.text = self.restosList[indexPath.row].nom
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.restosList.count
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var alert:UIAlertView = UIAlertView()
alert.title = self.restosList[indexPath.row].description
alert.addButtonWithTitle("OK")
alert.show()
self.mTableView.deselectRowAtIndexPath(indexPath, animated: true)
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let deleteClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
println("Delete closure called")
}
let moreClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
println("More closure called")
}
let deleteAction = UITableViewRowAction(style: .Default, title: "Delete", handler: deleteClosure)
let moreAction = UITableViewRowAction(style: .Normal, title: "More", handler: moreClosure)
return [deleteAction, moreAction]
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
// Intentionally blank. Required to use UITableViewRowActions
}
尝试使用此代码重新加载 table 视图数据。
self.tableView.reloadData()
将 canEditRowAtIndexPath 方法添加到您的视图控制器并且 return 正确。
我通常将我的处理程序代码作为闭包直接放入参数中,但我认为这不会有什么不同。
代码如下:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var myItems = ["Item 1","Item 2","Item 3"]
@IBOutlet weak var myTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.textLabel?.text = myItems[indexPath.row]
return cell
}
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
// Okie dokie
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit", handler: {
Void in
println("edit swipe")
})
let superAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Super", handler: {
Void in
println("super swipe")
})
return [editAction, superAction]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我想在我的表格视图中的所有单元格上实现滑动动作。 阅读 4 个不同的教程后,我不明白为什么我的操作按钮没有出现:我可以执行 "swipe",我可以在按钮应该出现的地方看到空白 space。甚至我的处理程序都不会在点击时调用...
class RestaurantsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var mTableView: UITableView!
private var restosList = [Restaurant]()
override func viewDidLoad() {
super.viewDidLoad()
self.mTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
let url = "http://xxxxxxxxxx"
Alamofire.request(.GET, url, parameters: ["service" : "restaurants"])
.responseArray { (response: [Restaurant]?, error: NSError?) in
if let response = response {
for oneResto in response {
self.restosList.append(oneResto)
}
}
self.mTableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.mTableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
cell.textLabel?.text = self.restosList[indexPath.row].nom
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.restosList.count
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var alert:UIAlertView = UIAlertView()
alert.title = self.restosList[indexPath.row].description
alert.addButtonWithTitle("OK")
alert.show()
self.mTableView.deselectRowAtIndexPath(indexPath, animated: true)
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let deleteClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
println("Delete closure called")
}
let moreClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
println("More closure called")
}
let deleteAction = UITableViewRowAction(style: .Default, title: "Delete", handler: deleteClosure)
let moreAction = UITableViewRowAction(style: .Normal, title: "More", handler: moreClosure)
return [deleteAction, moreAction]
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
// Intentionally blank. Required to use UITableViewRowActions
}
尝试使用此代码重新加载 table 视图数据。
self.tableView.reloadData()
将 canEditRowAtIndexPath 方法添加到您的视图控制器并且 return 正确。
我通常将我的处理程序代码作为闭包直接放入参数中,但我认为这不会有什么不同。
代码如下:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var myItems = ["Item 1","Item 2","Item 3"]
@IBOutlet weak var myTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.textLabel?.text = myItems[indexPath.row]
return cell
}
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
// Okie dokie
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit", handler: {
Void in
println("edit swipe")
})
let superAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Super", handler: {
Void in
println("super swipe")
})
return [editAction, superAction]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}