gpt4 book ai didi

ios - 关闭 dismissViewController 不会触发 viewWillAppear

转载 作者:行者123 更新时间:2023-11-29 02:55:22 27 4
gpt4 key购买 nike

我有一个打开模态序列 View 的 View 。

我用这段代码打开这个 View :

- (IBAction)openInfopage:(UIButton *)sender;
{
[self performSegueWithIdentifier:@"Infopage" sender:self.view];
}

我关闭这个 View :

- (IBAction)closeView:(id)sender { 
// old version:
//[self dismissViewControllerAnimated:YES completion:nil];

// my new version:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

当模态关闭时,我想用模态视图生成的新数据更新 View 。

我使用 [self.tableView reloadData]; 来更新,但是我可以把这段代码放在哪里,所以它会启动?

我尝试了 viewWillAppear,但是当我关闭模态视图时它没有被调用。

最佳答案

我总是把这些东西放在委托(delegate)协议(protocol)中。因此,只需将其插入到您的 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行之后。并实现委托(delegate)方法 -(void)modalFinished。通过这种方法,您可以进行刷新。当然,在呈现 View Controller 中将 modal-viewcontroller 的委托(delegate)属性设置为 self。

编辑:

MyViewController mvc = ...;
MyViewController.delegate = self;
[self presentViewController:...];

如果您通过 segue 呈现:

在prepareForSegue中:

MyViewController *mvc = segue.destinationViewController;
mvc.delegate = self;

关于ios - 关闭 dismissViewController 不会触发 viewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com