我有一个在视图控制器中使用的功能。最好放在哪里,这样我就不会在这些控制器上重复此操作?

-(void)addNewQuestion
{
    AddNewQuestionViewController *anqvc = [[AddNewQuestionViewController alloc]initWithTopic:self.topic];

    [anqvc setCompletionHandler:^(Question *newQuestion){
        [self.questionTableView reloadData];
    }];

    [self.navigationController pushViewController:anqvc animated:YES];
    [anqvc release];
}

最佳答案

您应该实现observer-pattern

在应用程序中的某个位置,您拥有模型:您的问题和每个ViewController清单都需要列出所有问题,因此应在模型中遵守该列表。如果您的模型发生了变化:例如添加一个新问题,将通知所有观察员。

在obj-c中,您可以使用Key-Value-Observing

因此,每个在表格视图中列出数据的VC都可以调用[self.tableView reloadData]
甚至更好:创建一个仅实现DataSource的新类,并在所有tableView中使用相同的DataSource。

10-04 13:19