【发布时间】:2015-02-03 13:26:20
【问题描述】:
我创建了 UIView 的自定义子类以及 xib 文件,并在自定义类中声明了 IBOutlets 和 IBActions。
@interface ContactUsView : UIView
@property (nonatomic, weak) IBOutlet UIButton *displayCloseButton;
- (IBAction)callButtonPressed:(id)sender;
- (IBAction)emailButtonPressed:(id)sender;
- (IBAction)displayCloseButtonPressed:(id)sender;
@end
在 xib 文件中,我拖入了一个 UIView 来表示我的自定义视图。我已经设置:
- 文件所有者 = 我的自定义类
- 已将 UIView 中的拖动设置为我的自定义类。
然后我添加了连接到上述 3 种方法的各种按钮。
在 ContactUsView.m 我有以下内容:
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
NSArray* array = [[NSBundle mainBundle] loadNibNamed:@"ContactUsView" owner:self options:nil];
for (id object in array) {
if ([object isKindOfClass:[ContactUsView class]])
self = (ContactUsView *)object;
}
}
return self;
}
当我开始创建此视图时,我会执行以下操作:
- (void)viewWillAppear:(BOOL)animated
{
ContactUsView *contactUs = [[ContactUsView alloc] initWithFrame:CGRectZero];
CGPoint origin = self.view.frame.origin;
CGSize size = self.view.frame.size;
[contactUs setFrame:CGRectMake(origin.x,
CGRectGetMaxY(self.view.frame) - 100,
size.width,
contactUs.frame.size.height)];
[self.view addSubview:contactUs];
}
问题 当我按下其中一个按钮时,应用程序崩溃: 线程 1:EXC_BAD_ACCESS(code=2, address=0xb0c
谁能帮我解决这个问题。我觉得在从 xibs 创建和加载自定义 uiview 方面我可能在某处犯了错误。
如果您需要更多信息,请告诉我。非常感谢。
未来参考 使用 xib 创建自定义视图时,请勿设置文件所有者。而是像往常一样创建所有 IBOutlets 和 IBActions,然后将它们连接起来,打开 Utilities 选项卡并从那里控制拖动。
【问题讨论】:
-
你能发布整个错误吗?或者错误实际发生的那一行?在 XCode 中启用异常断点。
-
如果我在被调用的方法之一中设置了断点,它永远不会到达断点。它只是与上面的代码崩溃,输出中没有显示任何内容。我添加了一个“所有异常”断点,但输出中仍然没有显示任何内容。
标签: ios objective-c uiview xib custom-view