所以我正在使用表格视图构建应用程序。问题是要删除的滑动未显示在模拟器中。当我尝试向左滑动时,没有任何东西弹出。这是主视图控制器的代码。任何帮助将不胜感激!
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var tableView : UITableView?
@IBOutlet weak var table: UITableView!
// Table View where the goals are displayed
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Goal List"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
table.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return goalMgr.goals.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell : UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
//Assinging the contents of our goal array into rows
cell.textLabel?.text = goalMgr.goals[indexPath.row].goal
cell.detailTextLabel?.text = goalMgr.goals[indexPath.row].time
return cell
}
func tableView(tableView: UITableView,
didSelectRowAtIndexPath indexPath: NSIndexPath) {
var detail:SecondVC = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as SecondVC
detail.cellGoal = goalMgr.goals[indexPath.row].goal
detail.cellTime = goalMgr.goals[indexPath.row].time
self.navigationController?.pushViewController(detail, animated: true)
}
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView:UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath:NSIndexPath!){
if (editingStyle == UITableViewCellEditingStyle.Delete){
goalMgr.removeGoal(indexPath.row)
table.reloadData()
}
}
}
这是创建removeGoal函数的文件
import UIKit
var goalMgr:GoalManager = GoalManager()
struct Goal{
var goal: String = "Goal"
var time: String = "Time"
}
class GoalManager: NSObject {
var goals = [Goal]()
var persistentHelper: PersistentHelper = PersistentHelper()
override init(){
var tempGoals:NSArray = persistentHelper.list("Goal")
for res:AnyObject in tempGoals{
goals.append(Goal(goal:res.valueForKey("goal")as String,time:res.valueForKey("time") as String))
}
}
func addGoal(goal:String, time: String){
var dicGoal: Dictionary<String, String> = Dictionary<String,String>()
dicGoal["goal"] = goal
dicGoal["time"] = time
if(persistentHelper.save("Goal", parameters: dicGoal)){
goals.append(Goal(goal: goal, time: time))
}
}
func removeGoal(index:Int){
var value:String = goals[index].goal
if(persistentHelper.remove("Goal", key: "goal", value: value)){
goals.removeAtIndex(index)
}
}
}
答案 0 :(得分:3)
您的tableView:commitEditingStyle:forRowAtIndexPath
方法似乎已关闭。看起来你已经粘贴了下面的方法:
func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool
{
return true
}
您已经在tableView:canEditRowAtIndexPath
方法之上定义了tableView:commitEditingStyle:forRowAtIndexPath
方法。
<强>更新强>
您说滑动时,不会显示删除按钮。但是细胞的内容是否向左滑动?如果是这样,试试这个:
代码中的一切似乎都很好,所以我猜测删除按钮就在那里,但它只是在纵向模式下不可见。它应该在风景中可见,这就是我建议上述步骤的原因。
如果在横向模式下看到删除按钮,则需要使用自动布局调整UITableView的对齐方式。
答案 1 :(得分:0)
要轻扫工作,您必须实施tableView:editingStyleForRowAtIndexPath:
在此功能中,您将返回行支持的编辑样式。只有实现此功能才会滑动以删除工作。所以在这里返回UITableViewCellEditingStyle.Delete
。
如果您想更改滑动时显示的红色框中的文字标签,请执行tableView:titleForDeleteConfirmationButtonForRowAtIndexPath:
tableView:canEditRowAtIndexPath:
只允许您否决哪些行支持进行编辑。
答案 2 :(得分:0)
要检查的另一件事是&#34;用户交互已启用&#34;将在“属性”检查器中检查“表视图”单元格。默认情况下会进行检查,但如果您在某个时候取消选中它,则滑动删除功能将无效。