2015-08-14 63 views
0

我是Swift的初學者,我搜索了很多東西,但無法弄清楚並決定在此發佈我的第一個問題。Swift如何從UITableViewRowAction獲取訪問func

我有一個表格視圖,通過使用twitter結構來顯示推文,我使用UITableViewRowAction向用戶展示了兩個選項:「funnelOne」和「funnelTwo」,通過添加標籤對他們的推文進行分類到每條推文。

在視圖控制器中,我添加了兩個函數來生成警報並獲取'funnelTag'的值以將其存儲到我的核心數據中。

但是,我不確定是否可以將數字正確存儲到核心數據,因爲如果我按下其中一個可滑動按鈕,將會刪除不同的單元格。我知道我可以在'func tableView'中編寫代碼來刪除該行,但是如何從'func tableView'中獲取訪問權限以成功刪除該行?

如果可以解決,我應該能夠成功地將值存儲到我的核心數據。

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath) as? CustomTableViewCell 

    let funnelOne = UITableViewRowAction(style: .Default, title: "funnel") { 
     (action, indexPath) -> Void in 
     funnelTag = 1 // funnelTag is Int I want to store in my Core Data 
     cell!.tag = funnelTag 

     // self.tweets.removeAtIndex(indexPath.row) - I know this is working 
     tableView.setEditing(false, animated: true) 
     } 

    let funnelTwo = UITableViewRowAction(style: .Default, title: "funnel") { 
     (action, indexPath) -> Void in 
     funnelTag = 2 
     cell!.tag = funnelTag 
     tableView.setEditing(false, animated: true) 
     // self.tweets.removeAtIndex(indexPath.row) 

    } 

這些是我添加的兩個功能。如果我實現這些功能,即使我想要刪除其他行,第一行也會被刪除...第一個函數funnelTweet()正常工作,但第二個函數看起來並不正確。

func funnelTweet(cell: CustomTableViewCell){ 
    let index: Int = cell.tag 
    if SettingStore.sharedInstance.isNoAlert(){ 
     self.submitFunnel(index, cell: cell) 
    } else { 
     self.alert = UIAlertController(title: NSLocalizedString("stock_confirm_funnel", comment: ""), message: nil, preferredStyle: .Alert) 
     self.alert!.addAction(UIAlertAction(title: NSLocalizedString("common_ok", comment: ""), style: .Destructive) { action in 
      self.submitFunnel(index, cell: cell) 
      }) 
     self.alert!.addAction(UIAlertAction(title: NSLocalizedString("common_cancel", comment: ""), style: .Cancel) { action in 
      cell.moveToLeft() 
      }) 
     self.presentViewController(self.alert!, animated: true, completion: nil) 
    } 
} 

func submitFunnel(index: Int, cell: CustomTableViewCell){ 
    var tweet = self.tweets[index] 
     // store to local storage 
     TagStore.sharedInstance.saveData(tweet.createdAt, funnelTag: funnelTag, id: tweet.tweetID) 
     self.tweets.removeAtIndex(index) 
     self.tableView!.reloadData() 
    } 

謝謝你的幫助!

回答

1

在第二個函數中,您在使用它之前沒有初始化索引。

func submitFunnel(index: Int, cell: CustomTableViewCell){ 
// Initialize index here before using it in the next statement.. that is give it a value, otherwise it will return nil 
var tweet = self.tweets[index] 
    // store to local storage 
    TagStore.sharedInstance.saveData(tweet.createdAt, funnelTag: funnelTag, id: tweet.tweetID) 
    self.tweets.removeAtIndex(index) 
    self.tableView!.reloadData() 
} 
+0

謝謝。它有助於!! – EastCool

+0

請給我一個投票或正確的答案,因爲我在這裏是一個初學者,並需要一些特權,在此先感謝。 –