gpt4 book ai didi

objective-c - 覆盖 initWithCoder 时无限循环

转载 作者:技术小花猫 更新时间:2023-10-29 10:18:39 26 4
gpt4 key购买 nike

我有一个带有一些 Controller 和一些 View 的 UIViewController。其中两个 View (网格单元)是其他 Nib 。我有从 Grid Cells 到 File's Owner 的导出,但它们不会自动加载。

所以我尝试覆盖 GridCell.minitWithCoder。这将启动一个无限循环。

我知道可以只覆盖 initWithFrame 并从代码中添加 subview ,但这不是我想要的。我希望能够在 Interface Builder 中四处移动 View ,并让 Xcode 使用正确的框架初始化 View 。

我该如何实现这一目标?

编辑 1

我正在尝试在 Alexander 的帮助下使其正常工作。这就是我现在的设置方式:MainView 具有 UIView,其自定义类设置为 GridCell。它在 MainView/File's Owner 中有一个导出。

Pic 1

从 GridCell.m 中删除了所有初始化代码并为我的自定义类设置了一个导出

Pic 2

Pic 3

虽然 MainView 仍然不显示 GridCell。没有错误,只是红色开关应该在的地方一片寂寞、空旷。我做错了什么?

我非常接近以编程方式执行此操作。不过,我很想学习如何使用 Nib 。

最佳答案

加载 nib 会导致再次调用 initWithCoder,因此您只希望在子类当前没有任何 subview 时这样做。

-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
if (self.subviews.count == 0) {
UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
UIView *subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
subview.frame = self.bounds;
[self addSubview:subview];
}
}
return self;
}

关于objective-c - 覆盖 initWithCoder 时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450258/

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