XCode IBOutlet UIView 添加到 ViewControllers .h - UIViews 类型无法识别
Posted
技术标签:
【中文标题】XCode IBOutlet UIView 添加到 ViewControllers .h - UIViews 类型无法识别【英文标题】:XCode IBOutlet UIView added to ViewControllers .h -- UIViews type not recognized 【发布时间】:2011-12-30 13:33:14 【问题描述】:我已将我的视图控制器的视图作为属性添加到支持 .h 文件 myViewController.h 的视图控制器中:
@property (weak, nonatomic) IBOutlet UIView* view;
在 myViewController.m 方法之一中编写 view.window 时,Xcode 将该行标记为错误,并显示“在 view 类型的对象上找不到属性 'window'”。它无法构建。注意我最初选择支持类 view.h 作为类型的视图。我已经清理了项目。
特别是我在这里得到错误:
- (void)viewDidLoad
[super viewDidLoad];
displayLink = [view.window.screen displayLinkWithTarget:(self) selector:@selector(drawFrame)];
我该如何解决这个问题?我喜欢在其中一种视图控制器方法中访问视图控制器视图窗口。
【问题讨论】:
不要添加名为“view”的插座,因为它会与所有名为view
的UIViewController
s 上的标准插座冲突。尝试使用其他名称。
谢谢。你是对的。我实际上使用了不同的名称。为了清楚起见,我删除了我选择的前缀。
我解决了。我用与视图支持类相同的名称命名了出口。这导致了错误。命名与类不同的出口可以解决它。谢谢你的提示!
【参考方案1】:
@synthesize 语句是什么?
不要将插座命名为“视图”,这会导致与具有视图属性的 UIViewController 混淆。
目前 Apple 默认让 ios IBOutlets 变弱。自早期的 iOS SDK 以来,这种情况发生了变化。如果它们被超级视图或控制器保留,那么弱的 IBOutlet 通常会起作用。
【讨论】:
@synthesize 语句位于视图控制器 .m 中。 UIView.h 由 view.h 导入,view.h 由视图控制器 .h 导入。默认情况下,插座很弱。弱者为其他项目工作。我与其他项目(虽然没有访问视图本身)进行比较,但找不到差异。 在 iOS 上 IBOutlets 很强,在 OSX 上它们很弱。 明白了。试过了。没有解决它。 Apple 的“您的第一个 iOS 应用程序”指南使用 ARC 和弱属性。感谢您的提示! @LarsHansen 这很有趣!也许 Apple 正在改变他们留住人才的理念。 你和@JasonCoco 基本上给出了正确的提示:命名冲突。虽然直到现在我才从你的回答中理解它(我读的是“出口视图”而不是“出口'视图'”)并且“解决”是对我原来帖子的评论,但我选择了这个答案作为首选,因为我不能为原始答案这样做。然而,这个问题有一个解决方案,因此一些标记是合适的。谢谢。以上是关于XCode IBOutlet UIView 添加到 ViewControllers .h - UIViews 类型无法识别的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 5 中让两个按钮转到同一个 IBOutlet?
在自定义 UIView 类中从 UIView 快速创建 IBoutlet [重复]