2015-04-15 124 views
0

我有一個帶有自定義單元類和導航控制器的表。我添加了一個編輯按鈕,導航控制器和創建一個IBAction爲到視圖控制器:編輯按鈕用於在Swift中刪除UITableView中的行不起作用

@IBAction func doEdit(sender: AnyObject) { 
    self.tableView.setEditing(true, animated: true) 
} 

的Xcode告訴我:

Cannot invoke 'setEditing' with an argument list of type '(Bool, animated: Bool)' 

我也試過navigationItem.rightBarButtonItem = editButtonItem()在viewDidLoad方法,但是,刪除圖標沒有在那裏顯示。

編輯:我爲UITableView創建了一個名爲table的插座。當輸入self.table.setEditing(true, animated: true)時,上述錯誤不再顯示,但當點擊編輯按鈕時,應用程序崩潰。下面的代碼:

import UIKit 

var arr = ["1", "2", "3"] 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet weak var table: UITableView! 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return arr.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell: CustomCellClass = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomCellClass 
    cell.cellTitle.text = arr[indexPath.row] 
    cell.backgroundColor = UIColor(red: 242.0/255.0, green: 157.0/255.0, blue: 48.0/255.0, alpha: 1.0)  
    return cell 
} 

@IBOutlet weak var editButton: UIBarButtonItem! 

@IBAction func doEdit(sender: AnyObject) { 
    self.table.setEditing(true, animated: true) 
} 

override func viewDidLoad() { 
    super.viewDidLoad()  
    // navigationItem.rightBarButtonItem = editButtonItem()  
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func viewDidAppear(animated: Bool) { 
    self.table.reloadData() 
} 
} 
+1

是你的「'tableView'」作爲一個'IBOutlet'連接到該視圖控制器中的表視圖嗎? –

+0

是的,它被稱爲「表」。請參閱上面更新的問題。 – MJQZ1347

回答

0

確保您的tableView從Interface Builder連接作爲IBOutlet

你可以通過從IB拖動到你的代碼來做到這一點。

+0

這是,請參閱上面編輯的問題。 – MJQZ1347

0

它現在有效,我刪除了插座並創建了一個名爲tableView的新插件。

相關問題