gpt4 book ai didi

ios - 尝试设置弹出窗口时 UITextView 为零

转载 作者:行者123 更新时间:2023-11-29 01:46:34 24 4
gpt4 key购买 nike

我有两个 View Controller :SavePopOverVCMainVC。我还有一个名为 SavePopOver 的 nib 文件。 SavePopOver 有三个项目,一个 UIButton,一个 UIImage 和一个 UITextView。图像和 TextView 在 SavePopOverVC 中有 property 字段的导出,分别称为 captionImage 和 captionTextView。该按钮有一个到 SavePopOverVC 中的 IBAction 的导出。

MainVC.m 中,我的类扩展中有以下两行。

SavePopOverVC *spvc;
UIPopoverController *popover;

在同一文件的 viewDidLoad 中,我有以下与弹出窗口相关的行。

spvc = [[SavePopOverVC alloc] initWithNibNamed:@"SavePopOver" bundle:nil];
popover = [[UIPopoverController alloc] initWithContentViewController:spvc];

在我显示弹出窗口的函数中,也在 MainVC.m 中,我有以下几行。

[popover setPopoverContentSize:CGSizeMake(600,200)];
[popover presentPopoverFromRect:_header.frame inView:self.view permittedArrowDirection:UIPopoverArrowDirectionAny animated:YES];
[((SavePopOverVC *)popover.contentViewController).captionTextView setText:@"Some text here"];

但是,当我调用 setText: 时,captionTextView 为 nil。该应用程序不会崩溃,但未设置文本。弹出窗口显示后,我单击 UIButton 以保存在 captionTextView 中键入的字符串,我得到了很好的字符串。所以,我知道这两者最终是正确链接的,但是当我显示弹出窗口时如何设置 captionTextView

如果值得注意的话,我是专门为 iPad 开发的。

最佳答案

它很可能是 nil 因为它的 View 在您设置文本时没有加载。与大多数其他现代语言不同,在 Objective-C 中调用 nil 对象上的方法不会导致异常,它什么都不做。

要解决这个问题,您可以在 SavePopOverVC 中创建自定义 NSString 属性,例如

@property (nonatomic, copy) NSString *caption;

在调用 presentPopoverFromRect: 之前,请为该属性赋值。在 SavePopOverVC 中,覆盖 viewDidLoad 并设置 captionTextView.text = self.caption;

可能有人不同意我的看法,但我不建议在 View Controller 中将 UI 控件作为属性公开。这种行为是造成这种情况的原因之一。

关于ios - 尝试设置弹出窗口时 UITextView 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860779/

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