2013-02-26 3 views
1

Как обновить родительский вид после закрытия окна UIModalPresentationFormSheet. Если я использую обычный вид, я могу перезагрузить родительский вид. Проблема только в UIModalPresentationFormSheet. Пожалуйста, помогите мне. БлагодаряКак перезагрузить родительский вид

navigationController.modalPresentationStyle = UIModalPresentationFormSheet; 

Если я использую

navigationController.modalPresentationStyle = UIModalPresentationFullScreen; 

я могу обновить родительскую tableview.Issue только в UIModalPresentationFormSheet, но мне нужно использовать UIModalPresentationFormSheet для отображения всплывающего зрения. Пожалуйста, помогите мне. Благодаря

+0

Почему вы хотите перезагрузить родительский вид? –

+0

Я редактирую некоторые данные в представлении «UIModalPresentationFormSheet». Я хочу показать изменения в родительском представлении. – Suppry

+2

вам нужно что-то другое, чтобы уведомить об этом изменение (KVO, NSNotificationCenter, делегат, передать ссылку и вызвать метод так много) –

ответ

3

IMO Самый простой способ:

//FormController.h 

@protocol FormDelegate; 

@interface FormController : UIViewController 
... 
@property (nonatomic, assign) id <FormDelegate> delegate; 
... 
@end 

@protocol FormDelegate 
-(void)didDismissForm; 
@end 

//MainViewController.h 

#import "FormController.h"  
@interface MainViewController : UIViewController <FormDelegate> 
... 

Установите делегат при создании (или выполнения SEGUE) инструктажа FormController.
Вызовите метод делегата при его увольнении. Внедрить метод делегата в MainViewController.

-(void)didDismissForm { 
    [self.tableView reloadData]; 
} 
+0

Если я использую navigationController.modalPresentationStyle = UIModalPresentationFullScreen; Я могу обновить родительский tableview.Issue только в UIModalPresentationFormSheet, но мне нужно использовать UIModalPresentationFormSheet для всплывающего представления. Пожалуйста, помогите мне. Спасибо – Suppry

+0

Работает точно так же. – Mundi

0

Вы должны делегировать parentView из PresentModalView и должен вызвать метод referesh на viewWillDisappear из PresentModalView.

В противном случае вы можете попытаться нажать уведомление и наблюдать за ним в parentView.

- (void) refreshMyParentViewController{ 
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; 
    [center postNotificationName:@"RefreshNeeded" object:self userInfo:refreshData]; 
} 

// В ParentViewController - AddObserver для обнаружения данных. // И метод, который вы хотите вызвать.

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

- (void)delegateMethod:(NSNotification *)notification { 
     NSLog(@"%@", notification.userInfo); 
     NSLog(@"%@", [notification.userInfo objectForKey:@"RefreshObject"]);  
} 



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

    - (void)delegateMethod:(NSNotification *)notification { 
      NSLog(@"%@", notification.userInfo); 
      NSLog(@"%@", [notification.userInfo objectForKey:@"RefreshObject"]);  
    } 
Смежные вопросы