我有一个视图打开模态seque视图。
我使用以下代码打开此视图:
- (IBAction)openInfopage:(UIButton *)sender;
{
[self performSegueWithIdentifier:@"Infopage" sender:self.view];
}
我用以下方法关闭此视图:
- (IBAction)closeView:(id)sender {
// old version:
//[self dismissViewControllerAnimated:YES completion:nil];
// my new version:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
当模态关闭时,我想用模态视图生成的新数据更新视图。
我使用[self.tableView reloadData];
进行更新,但是我可以在哪里放置此代码,以便它会启动?
我尝试使用viewWillAppear,但是在关闭模态视图时不会调用它。
答案 0 :(得分:1)
我总是把这些东西放在委托协议中。所以只需将其插入到modal-viewcontroller.h:
@protocol MyDelegateProtocol <NSObject>
@optional
-(void)modalFinished;
@end
@interface ViewController : UIViewController
@property (nonatomic, weak) id <MyDelegateProtocol> delegate;
@end
在.m中称之为:
if(_delegate) [_delegate modalFinished];
完成后。在演示ViewController中,你必须实现这个:
<MyDelegateProtocol>
@implementation行后的。并实现委托方法 - (void)modalFinished。在这种方法中,您可以进行刷新。当然,在呈现视图控制器中将委托属性从modal-viewcontroller设置为self。
编辑:
MyViewController mvc = ...;
MyViewController.delegate = self;
[self presentViewController:...];
如果你通过segue出现:
在prepareForSegue中:
MyViewController *mvc = segue.destinationViewController;
mvc.delegate = self;