ios swift parse:reload tableView适用于更新,但不适用于添加新项目

时间:2015-03-11 11:45:41

标签: ios uitableview swift

我在tableViewController中使用这些行:

override func viewDidAppear(animated: Bool) {
        // Refresh the table to ensure any data changes are displayed
        self.tableView.reloadData()
}

当我编辑数据并返回tableView时,我可以看到我所做的更改,因为重新加载似乎已经发生。

当我添加新数据(我使用与编辑时相同的保存方法)时,我返回上一个tableView,但新条目不会出现。但是他们肯定会在解析中保存。

我想知道,为什么添加和编辑之间存在差异?与两者使用相同的代码?并使用相同的IBAction进行保存?

这是我的保存方法:

@IBAction func saveNewCard(sender: AnyObject) {

    // set up data
    self.cardObject["front"] = self.frontTextArea.text
    self.cardObject["back"] = self.backTextArea.text
    self.cardObject.setObject(cardSetObject, forKey: "cardset") // Setting the pointer

    println(cardObject)

    self.cardObject.saveEventually { (success, error) -> Void in

        if(error == nil){

            println(success)

            // Return to table view
            self.navigationController?.popViewControllerAnimated(true)

        }else{
            println(error.userInfo)
        }
    }

}

viewDidLoad()我决定使用新的(添加)或现有的(编辑)对象:

var cardObject: PFObject! // if edit - I get the object transported via segue
override func viewDidLoad() {
    super.viewDidLoad()

    if (self.cardObject != nil){

        // edit
        self.navigationItem.title = "Edit"
        self.frontTextArea.text = self.cardObject["front"] as String
        self.backTextArea.text = self.cardObject["back"] as String


    }else{

        // add new
        self.navigationItem.title = "Add"
        self.cardObject = PFObject(className:"Card")
    }
}

这是我的cellForRowAtIndexPath

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell = tableView.dequeueReusableCellWithIdentifier("cardCell", forIndexPath: indexPath) as CardTableViewCell

        // card object
        let cardObject: PFObject = self.cardObjects.objectAtIndex(indexPath.row) as PFObject
        var front = cardObject["front"] as String
        var back = cardObject["back"] as String
        cell.frontLabel.text = front
        cell.backLabel.text = back


        return cell;
    }

1 个答案:

答案 0 :(得分:0)

如果您使用导航控制器,请使用以下命令:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    if([[segue destinationViewController] class] == [self class]){
        [self.tableView reloadData];
    }
}