2013-05-28 1 views
0

У меня есть 3 элемента табло, каждый из которых имеет контроллер вида. Первый, Второй и Третий диспетчер. Мне нужно, чтобы First ViewController вызывал метод, который обновляет представление tableview во втором представлении контроллера. Я не уверен, что это правильный способ справиться с этим. Я попробовал sharedInstance, но то, что я думаю, происходит, создается два экземпляра, и этот контроллер представления, который использует первая виртуальная машина, - это не та же виртуальная машина, которая фактически используется в приложении, что объясняет, почему мой tableview isn ' t.Как вызвать метод из контроллера корневого элемента на панели управления

В основном, когда я загружаю файл в First View Controller, мне нужна вторая виртуальная машина, чтобы обновить представление таблицы и показать прогресс загрузки файла. Как нравится, когда песня приобретается в iTunes. Это UINavigationViewControllers для элементов табуляции.

Я попытался это:

+ (SecondViewController *)sharedInstance { 
// Singleton implementation 
static SecondViewController* instance; 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
    instance = [[SecondViewController alloc] init]; 
}); 

return instance; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UploadTableView.dataSource = self; 
    UploadTableView.delegate = self; 

    [S3UploadClientManager tm].delegate = self; 

} 

ответ

1

Вы не хотите контроллеры общаться друг с другом напрямую. Если вы переходите к другому виду, вы можете использовать prepareForSegue. Если вы не хотите использовать это, я предлагаю вам либо обновить файл, либо базу данных, к которой имеют доступ оба контроллера, чтобы избежать прямого взаимодействия и сохранить архитектуру mvc.

+0

Но как я могу создать что-то, чтобы уведомить второй контроллер представления, что нужно обновить? Предполагая, что первая виртуальная машина вносит изменения в базу данных. – TMan

+0

Зачем контроллеру просмотра необходимо обновить его до того, как он будет отображаться. – aaronman

+0

Я наткнулся на совершенно другой подход. Я думаю, что этот подход, который я пытался, был у меня над головой. Это мое первое приложение для iPhone. Я использую настольные и веб-разработки, где я мог бы использовать средство уведомления/мессенджера для общения с другими моделями/контроллерами представлений. Разные для iOS, я думаю. Спасибо за советы. – TMan

0

Вы могли бы реализовать метод tabBarController делегата:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if([viewController isMemberOfClass[SecondViewController class]]) {
//pass the data here
}
}

Смежные вопросы