在第二个TableView中编辑数据时,在第一个TableView中刷新数据的最佳方法是什么?

时间:2015-11-14 18:46:33

标签: ios objective-c uitableview

当您在另一个TableView中编辑数据时,为了刷新原始TableView中的数据,我很困惑。有人可以简单地说明这样做的正确方法是什么?

我有一个基于DrillDown教程here的应用程序,它显示了我最喜欢的引号。引号存储在sqlite数据库中,该数据库在应用程序启动时加载。我的RootViewController显示引号类别,数据由QuotesAppDelegate提供。

在我的RootViewController上有一个编辑按钮,显示一个SettingsViewController,它允许您切换将显示哪些类别,哪些不会。

在click_Saved方法中,我使用所做的任何更改来更新数据库,并尝试从此SettingsViewController刷新RootViewController。我更新了RootViewController的数据数组cvc.categories和底层数据库[sub setActive:s.active]。我知道数据库正在正确更新,因为当我重新启动应用程序时,更改是在RootViewController中进行的。但是我希望在click_Saved时立即显示更改,它会关闭SettingsViewController并返回RootViewController。

我已经尝试了[self.tableView reloadData],尝试过通知,并搜索SO寻找解决方案,并且必须缺少一些基本问题,我将不胜感激。

- (void) save_Clicked:(id)sender {

    RootViewController *cvc = [[RootViewController alloc] init];

    QuotesAppDelegate *appDelegate = (QuotesAppDelegate *)[[UIApplication sharedApplication] delegate];

    for (Subject *s in selectedTabs){

        NSLog(@"--   Set selected subject %@-%@ to %ld", s.category_title, s.title, (long)s.active);

        //UPDATE THE ACTIVE STATUS ON THE SELECTED SUBJECTS
        [s setActiveStatus:s.active];

        //UPDATE ARRAY
        for (Subject *sub in appDelegate.subjects){

            if (sub.subject_id == s.subject_id){
                [sub setActive:s.active];
            }

        }

    }

    //RELOAD WHOLE DATABASE
    [appDelegate populateFromDatabase];

    cvc.categories = [appDelegate activeCategories];
    cvc.subjects = [appDelegate activeSubjects];
    [cvc.tableView reloadData];

    [[NSNotificationCenter defaultCenter]
     postNotificationName:@"refreshData"
     object:nil
     userInfo:nil//userInfoDictionary
     ];

    [self.navigationController dismissViewControllerAnimated:YES completion: nil];

}

编辑:我发现numberOfRowsInSection被多次调用,看起来正确更新然后还原,如您所见:

2015-11-14 11:38:55.086 Quotes[49115:2751005] ~~~numberOfRowsInSection: 15
2015-11-14 11:38:55.086 Quotes[49115:2751005] ~~~numberOfRowsInSection: 16
2015-11-14 11:38:55.087 Quotes[49115:2751005] ~~~numberOfRowsInSection: 15
2015-11-14 11:38:55.533 Quotes[49115:2751005] ~~~numberOfRowsInSection: 16

0 个答案:

没有答案