2014-05-07 2 views
3

Я новичок в программировании на iOS, и теперь у меня есть проблема.rejectViewControllerAnimated метод вызова в другом представлении

Существует экран входа в систему, который использует [self presentViewController:loginview animated:YES completion:nil];, чтобы показать его в MasterViewController.

А теперь я хочу, чтобы вызвать метод (данные перезарядка) после того, как [self dismissViewControllerAnimated:YES completion:nil]

это мой код:

[self dismissViewControllerAnimated:YES completion:^ { 
    [self getPostData];     // Reload Data 
    [self.tableView reloadData];  // Reload Data 
}]; 

, но он не работает.

(метод перезаряжают в MasterViewController)

Любой человек может мне помочь?

+0

Что такое 'self'? Должен ли он быть тем же объектом в вашем обработчике завершения? – Larme

+0

@ Larme метод находится в MasterViewController. – Arefly

+0

Существует два способа: 1. Использовать 'NSNotificationCenter', чтобы уведомить сообщение MasterViewController о вызове вышеуказанного метода, определенного только в MasterViewController. 2. Используйте «Протокол» – iphonic

ответ

8

Вы можете использовать NSNotificationCenter для вашей проблемы.

Определение NSNotification в вашем MasterViewControllerviewDidLoad как ниже

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeModal:) name:@"CloseModal" object:nil]; 

А затем определить метод, как показано ниже

-(void)closeModal:(NSNotification *)notification{ 
    UIViewController *controller=(UIViewController *)notification.object; 

    [controller dismissViewControllerAnimated:YES completion:^ { 
     [self getPostData];     // Reload Data 
     [self.tableView reloadData];  // Reload Data 
    }]; 

} 

И наконец с другого контроллера, где вы на самом деле пытаетесь отклонить код использования вашего контроллера ниже

+0

Я попробовал код, но у него нет никаких изменений в APP (он все еще не перезагружает данные) – Arefly

+0

oh! Прости! он работает сейчас !!! спасибо!!!! – Arefly

+0

Отличный !!Вы можете принять мое решение. – iphonic

1

, что вы должны сделать, это в основном вызывается метод на представлении вид контроллера, как показано ниже

[(MasterViewController*)self.presentingViewController reloadData]; 
+0

, но он говорит Нет видимых @interface для 'UIViewController' объявляет селектор 'reloadData ' – Arefly

0

Вы можете вызвать методы presentingViewController, которые обновляют представление Представление.

например: У меня есть модальный вид, который можно запустить из нескольких представлений. И у всех представлений есть вид, который будет перегружать код в представлении.

Добавьте нижеприведенный код перед тем, как рассеять модальный вид.

 [self.presentingViewController viewWillAppear:YES]; 

[self rejectViewControllerAnimated: YES завершение: Nil];

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