gpt4 book ai didi

ios - 带有自定义 XIB 的自定义 UIView 上的 EXC_BAD_ACCESS

转载 作者:IT王子 更新时间:2023-10-29 08:12:56 28 4
gpt4 key购买 nike

我正在使用最新的 SDK 开发 iOS 5+ 应用。

我创建了一个带有自定义 XIB 的自定义 UIView (TopMenuView)。在 Interface Builder 上,我已将此 XIB 上的 UIView 类更改为 TopMenuView。我还没有设置任何File's Owner

TopMenuView.m 我有:

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];

if (self)
{
NSLog(@"init with coder: %d", counter);
counter++;
// Add custom XIB
NSArray *topMenuView = [[NSBundle mainBundle] loadNibNamed:@"TopMenuView"
owner:nil
options:nil];
UIView *nv = [topMenuView objectAtIndex:0];

[self addSubview:nv];
}

return self;
}

我使用 Interface Builder 添加了一个 UIView 到一个 UIViewController 并将这个 UIView 类更改为 TopMenuView

但是,当我运行该应用程序时,我收到此日志消息 4251 次:2013-10-13 20:49:34.078 MyProject[470:c07] init with coder: 0

然后,我在这里得到一个EXC_BAD_ACCESS:

NSArray *topMenuView = [[NSBundle mainBundle] loadNibNamed:@"TopMenuView"
owner:nil
options:nil];

最佳答案

它多次调用 initWithCoder 的原因是您的 .xib 文件中的类设置错误。

确保文件所有者的自定义类是您的自定义 UIView 类:

enter image description here

并确保 Root View 上的类是默认的 UIView:

enter image description here

现在这就是您自定义类(在 Swift 中)所需的全部内容:

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

let view = NSBundle.mainBundle().loadNibNamed("TopMenuView", owner: self, options: nil)[0] as! UIView
self.addSubview(view)
view.frame = self.bounds
}

关于ios - 带有自定义 XIB 的自定义 UIView 上的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355104/

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