gpt4 book ai didi

iOS:使用 xib 的自定义 View

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

我遗漏了一些重要的东西。不确定它是什么。

我有一个自定义 View 子类。我创建了一个 xib 文件来设计它的布局。我连接了四个按钮作为类的 socket 。

#import <UIKit/UIKit.h>

@interface MCQView : UIView
@property (strong, nonatomic) IBOutlet UIButton *btn1;
@property (strong, nonatomic) IBOutlet UIButton *btn2;
@property (strong, nonatomic) IBOutlet UIButton *btn3;
@property (strong, nonatomic) IBOutlet UIButton *btn4;

然后我有

#import "MCQView.h"

@implementation MCQView
@synthesize btn1,btn2,btn3,btn4;

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]];
NSLog(@"%@", btn1);

return self;
}

然后我通过以下方式将 View 添加到另一个 View Controller :initWithFrame

当我尝试记录 btn1 以查看它是否存在时,它打印 null。我认为这是因为我还没有初始化它,但我不确定该怎么做,考虑到如果我将它创建为一个新按钮,那么 xib 中的所有内容都将毫无用处?

最佳答案

编辑后的回复:

哦等等,您正在尝试在您的类中初始化 View ?不要那样做。

在 Interface Builder 中,将 MCQview.xib 的 Class 设置为 MCQView 以自动创建连接。然后,连接所有按钮,如果您还没有的话。

之后,您将能够根据需要自动编辑属性。

enter image description here

原始回复

我是凭内存做的,但我认为你应该这样做:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil];

UIView *view = [[UIView alloc] init]; // or if it exists, MCQView *view = [[MCQView alloc] init];

view = (UIView *)[nib objectAtIndex:0]; // or if it exists, (MCQView *)[nib objectAtIndex:0];

[self.view addSubview:view];

关于iOS:使用 xib 的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927559/

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