Tag: loadnibnamed

从笔尖加载的视图不会收到触摸事件

我正在尝试从笔尖加载视图并将其添加到主视图。 这是我的代码。 我在@interface AddTaskView:UIView的initWithFrame中加载了nib: – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSLog(@"init with frame"); // Initialization code NSArray *addTaskArrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"AddTaskView" owner:self options:nil]; self=[addTaskArrayOfViews objectAtIndex:0]; } return self; } 之后,我初始化视图并将其添加到主视图中: self.addTaskView=[[AddTaskView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)]; [self.view addSubview:self.addTaskView]; 一切工作正常,但AddTaskView不会收到触摸事件。 我有三个button,当我尝试推动他们时,他们不会收到这些动作。 我做了“AddTaskView”types的笔尖,但没有任何运气。 我也看了子视图,“AddTaskView”是顶视图。 我在AddTaskView中添加了这段代码,看看我是否能够触摸并且没有回应: – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"touch"); } 我如何获得回应触摸事件的机会?

为什么“loadNibNamed”方法返回数组?

当我们使用loadNibNamed方法获取nib文件时,为什么会返回一个数组,是不是一个nib文件名对应一个nib文件? 我试图打印这个数组的数量,我发现它总是返回1.我希望你能帮我解释一下,谢谢你了! 以下是代码片段: NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestView" owner:self options:nil]; NSLog(@"array's count is %ld",array.count);

iOS loadNibName混淆,什么是最佳做法?

我熟悉为我自己的UIView子类创buildXIB的大部分过程,但并不是所有事情都适合我,主要是与IBOutlets连接起来。 我可以让他们看起来像一个迂回的方式工作。 我的设置是这样的: 我有MyClass.h和MyClass.m。 他们有一个UIView(称为视图)和一个UILabel(称为myLabel)的IBOutlets。 我添加了“视图”属性,因为在线上的一些示例似乎表明你需要这个,它实际上解决了一个问题,因为它无法find视图属性,我猜甚至在UIView父类。 我有一个名为MyClass.xib的XIB文件,它的文件所有者自定义类是MyClass,它在我的.h和.m文件存在之后正确预先填充。 我的init方法是我有问题的地方。 我尝试使用NSBundle的mainBundle的“loadNibNamed”方法,并将所有者设置为“自我”,希望我会创build视图的实例,它会自动得到它的出口匹配到我的课(我知道如何做到这一点,我很小心)。 然后我想我想让自己等于那个笔尖的索引0处的子视图,而不是这样做 self = [super init]; 或类似的东西。 我觉得我在这里做错了,但在线示例在init方法中有类似的事情,但他们将该子视图0分配给视图属性,并添加它作为一个孩子 – 但是那不是总共两个MyClass实例? 一个基本上与IBOutlets无关,包含通过loadNibNamed实例化的子MyClass? 或者至多,是不是一个MyClass实例与一个额外的中介UIView包含我最初希望作为MyClass的直接子项目的所有IBOutlets? 当涉及到像instanceOfMyClass.frame.size.width这样的事情时,这会带来一些烦恼,因为它会返回0,当引入的子UIView返回我正在寻找的实际框架大小。 是我做错了,我搞乱loadNibNamed在init方法内? 我应该做更像这样的事情吗? MyClass *instance = [[MyClass alloc] init]; [[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:instance options:nil]; 或者像这样? MyClass *instance = [[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:nil options:nil] objectAtIndex:0]; 预先感谢任何帮助。