gpt4 book ai didi

objective-c - UIViewController parentViewController 访问属性

转载 作者:行者123 更新时间:2023-12-04 03:16:08 25 4
gpt4 key购买 nike

我知道这个问题已经被问过好几次了,我确实阅读了关于这个主题的现有帖子,但我仍然需要帮助。

我有 2 个 UIViewControllers - 父项和子项。我使用 presentModalViewController 显示子 UIViewController,如下所示:

ChildController *child = 
[[ChildController alloc] initWithNibName:@"ChildView" bundle:nil];
[self presentModalViewController:child animated:YES];
[child release];

subview 有一个 UIPickerView。当用户从 UIPickerView 选择一个项目并点击完成时,我必须关闭模态视图并在父 View 的 UITextField 上显示所选项目。

在子按钮中单击delegate,我执行以下操作:

ParentController *parent = 
(ParentController *)[self.navigationController parentViewController];
[parent.myTextField setText:selectedText];
[self dismissModalViewControllerAnimated:YES];

一切正常,没有错误。但我不知道如何加载父 View 以使其显示更新后的 UITextField

我试过了

[parent reloadInputViews];

没用。请帮忙。

最佳答案

授权是必经之路。我知道有些人可能正在寻找更简单的解决方案,但请相信我,我已经尝试过其他解决方案,没有什么比委派更有效的了。所以任何遇到同样问题的人,请阅读有关授权的内容并逐步执行。

在您的 subviewcontroller.h 中 - 声明一个协议(protocol)并在其中声明委托(delegate)方法。

@protocol myDelegate
-(void)clickedButton:(subviewcontroller *)subController;
@end

在你的 subviewcontroller.h 中,@interface:

id<myDelegate> delegate;
@property (nonatomic, assign) id<myDelegate> delegate;
NSString *data;
-(NSString *)getData;

在您的 subviewcontroller.m 中,合成 myDelegate。将以下代码添加到您想要通知您的父 View Controller subview 已完成它应该做的任何事情的地方:

 [delegate clickedButton:self];

然后处理 getData 以返回任何你想发送给你的 parentviewcontroller 的数据

在您的 parentviewcontroller.h 中,导入 subviewcontroller.h 并使用它的委托(delegate)

 #import "subviewcontroller.h"
@interface parentviewcontroller : VUIViewController <myDelegate>
{}

在你的parentviewcontroller.m中,实现委托(delegate)方法

 - (void)clickedButton:(subviewcontroller *)subcontroller
{
NSString *myData = [subcontroller getData];
[self dimissModalViewControllerAnimated:YES];
[self reloadInputViews];
}

不要忘记内存管理!

关于objective-c - UIViewController parentViewController 访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412688/

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