Swift如何从UITableViewRowAction获取访问功能

时间:2015-08-14 17:52:54

标签: ios swift uitableview twitter

我是斯威夫特的初学者,我搜索了很多东西,但无法弄清楚并决定在这里发布我的第一个问题。

我有一个表格视图,通过使用Twitter结构显示推文,我使用UITableViewRowAction为用户提供两个选项,当在一行上完成滑动时," funnelOne"和" funnelTwo",通过在每条推文上添加标签来对推文进行分类。

在视图控制器中,我添加了两个函数来发出警报并获得值为“funnelTag”的值。将其存储到我的核心数据中。

但是,我不确定我是否可以正确地将数字存储到核心数据中,因为如果按下其中一个可滑动按钮,将会删除不同的单元格。我知道我可以在&f; func tableView'中编写代码。删除行,但我如何从&f; 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 个答案:

答案 0 :(得分: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() 
}