编辑数据并保存后,TableViewController不会更新。仅在应用程序重启时更新

时间:2014-05-08 07:43:23

标签: ios objective-c uitableview

我目前正在创建一个应用程序,可以通过单击它们然后转到单独的视图控制器来编辑存储在某些表视图单元格中的信息。

完成更改后,将按下保存按钮,并在parse.com上更新字段 我的问题是,一旦我回到我的主tableViewController,表格单元格不会更新,除非我完全重启应用程序,此时所有内容都显示为已更新。

我在iOS教程中调用了[self.tableView reloadData]方法,但它似乎似乎没有更新。

这是我正在尝试更新的控制器的.m文件。

@interface ProspectsTableViewController ()

@end

@implementation ProspectsTableViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.currentUser = [PFUser currentUser];

    PFQuery *query = [PFQuery queryWithClassName:@"Prospect"];
    [query orderByAscending:@"prospectName"];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (error) {
            NSLog(@"Error in prospect cells");
        }
        else {
            self.allProspects = objects;
            NSLog(@"%@", self.allProspects);
            [self.tableView reloadData];
        }
    }];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return [self.allProspects count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ProspectCell";
    UITableViewCell *prospectCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    PFObject *prospect = [self.allProspects objectAtIndex:indexPath.row];
    prospectCell.textLabel.text = prospect[@"prospectName"];

    return prospectCell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"cell pressed");
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [self performSegueWithIdentifier:@"showProspectInfo" sender:cell];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([segue.identifier isEqualToString:@"showProspectInfo"]) {

        ProspectInfoViewController *transferViewController = segue.destinationViewController; //prepares an instance of the prospectsTableViewController so we can pass our information over to the next view controller
        PFObject *prospect = self.allProspects[self.tableView.indexPathForSelectedRow.row]; //selects the information from the prospect at the cell tapped on
        transferViewController.name = prospect[@"prospectName"];
        transferViewController.phone = prospect[@"phoneNumber"];
        transferViewController.email = prospect[@"email"];
        transferViewController.objectId = [prospect objectId];
    }
}


@end

任何想法?我一直在努力想出这个问题很长一段时间

提前致谢!

2 个答案:

答案 0 :(得分:0)

回到表视图控制器后,看起来好像在调用[self.tableView reloadData];。尝试将此添加到表视图控制器的实现中,以便在您的视图控制器即将出现时刷新表视图:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.tableView reloadData];
}

答案 1 :(得分:0)

reloadData

中尝试viewDidAppear
- (void)viewDidAppear:(BOOL)animated
{
   [super viewDidAppear:animated];
   [self.tableView reloadData]
}