gpt4 book ai didi

ios - 为 iPad 中模态呈现的表单分配委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 19:15:01 25 4
gpt4 key购买 nike

我有一个 iPad View ,它显示了一个模式表单,它本质上是一个“设置” View 。
用户可以从那里转到特定设置。当模态视图被关闭时,我需要能够刷新主 iPad View 。

因此,我需要一个委托(delegate)协议(protocol)来调用 -(void)refreshTable当模态视图被关闭时。这不会是一个问题,除非当我呈现模态视图时,我需要分配的委托(delegate)是从呈现的 View “推送”的 View 。 (截屏)

enter image description here

以下是我展示模态表单的方式:
我将它封装在 UINavigationController 中,因为它需要推送其他 View 。
(我只是在这里分配委托(delegate),但是带有协议(protocol)的 View 是从 AddView 推送的)NewAftpViewController是具有协议(protocol)的 View Controller 。

-(void)presentAddView:(id)sender {

AddView *avc = [self.storyboard instantiateViewControllerWithIdentifier:@"add"];
UINavigationController *navcont = [[UINavigationController alloc] initWithRootViewController:avc];
navcont.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navcont animated:YES completion:NULL];
}

这是我在推送 View 中的协议(protocol):
@protocol RefreshAfterAddingNewAftpDelegate
-(void)refreshTable;
@end

@interface NewAftpViewController : UIViewController

@property (nonatomic, retain) id <RefreshAfterAddingNewAftpDelegate> refreshAfterAddingNewAftpDelegate;

@end

最佳答案

我可以看到两种方法来做到这一点。您应该能够使用 [self.navigationController presentingViewController] 在您的帖子中获得对最左侧 Controller 的引用。 -- 你需要转换 self.navigationController到任何类(class)。然后在你的NewAftpViewController ,您可以像这样设置委托(delegate):

self.delegate = [(cast here)self.navigationController presentingViewController];

但这似乎违背了使用委托(delegate)的目的——委托(delegate)人不应该知道委托(delegate)是什么类,但在这里你必须明确设置它。您可以直接调用该 Controller 上的方法,而不是使用委托(delegate)。

我认为在这种情况下更好的方法是使用 NSNotification .这对我来说似乎更干净,更简单。只需从 NewAftpViewController 发布通知即可,并让您的第一个 Controller 监听它。

关于ios - 为 iPad 中模态呈现的表单分配委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904342/

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