Паттерн проектирования Наблюдатель в iPhone-приложении

При сохранении нового события будем слать уведомление для этого в метод setNotification класса DetailViewController добавим:

[[NSNotificationCenter defaultCenter] postNotificationName:@"NewEvent" object:nil];


В классе MainTableViewController удалим метод viewDidAppear: и создадим новый метод reloadTableViewWhenNewEvent.

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reloadTableViewWhenNewEvent)
                                                 name:@"NewEvent" object:nil];
    
    NSArray *array = [[UIApplication sharedApplication] scheduledLocalNotifications];
    self.arrayEvents = [[NSMutableArray alloc] initWithArray:array];
}

- (void)reloadTableViewWhenNewEvent
{
    [self.arrayEvents removeAllObjects];
    
    NSArray *array = [[UIApplication sharedApplication] scheduledLocalNotifications];
    self.arrayEvents = [[NSMutableArray alloc] initWithArray:array];

    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0]
                  withRowAnimation:UITableViewRowAnimationFade];
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Таким кодом мы добились того чтобы таблица перезагружалась только при добавлении новых записей, а не всегда при открытии окна.