Iphone 将XIB加载到子视图中

Iphone 将XIB加载到子视图中,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,我一直在寻找如何做到这一点的所有信息,但没有发现任何我了解的 基本上,我希望能够从ViewController.xib加载子视图中该视图顶部的另一个xib文件。这个新的子视图应该是可操作的,因此可以使用多点触控手势和/或滑动手势来移动它 我试图从ViewController添加一个视图对象,然后将另一个XIB加载到该子视图对象中 希望有人能帮忙。谢谢 通过在ViewController中创建另一个类的实例,然后将其作为子视图添加到当前视图控制器中,您应该能够实现所需的功能 MyOtherView

我一直在寻找如何做到这一点的所有信息,但没有发现任何我了解的

基本上,我希望能够从ViewController.xib加载子视图中该视图顶部的另一个xib文件。这个新的子视图应该是可操作的,因此可以使用多点触控手势和/或滑动手势来移动它

我试图从ViewController添加一个视图对象,然后将另一个XIB加载到该子视图对象中


希望有人能帮忙。谢谢

通过在ViewController中创建另一个类的实例,然后将其作为子视图添加到当前视图控制器中,您应该能够实现所需的功能

MyOtherViewController *movc = [[MyOtherViewController alloc] init];
[self.view addSubview:movc.view];

至于处理手势,您可以在MyOtherViewController类中处理它们,或者创建容器视图并在ViewController中处理它们。不要忘记它们是子视图,任何移动都应该相对于它们的超级视图。

您应该能够通过在ViewController中创建另一个类的实例,然后将其作为子视图添加到当前视图控制器中来完成所需的操作

MyOtherViewController *movc = [[MyOtherViewController alloc] init];
[self.view addSubview:movc.view];

至于处理手势,您可以在MyOtherViewController类中处理它们,或者创建容器视图并在ViewController中处理它们。不要忘记它们是子视图,任何移动都应该相对于它们的超级视图。

您可以通过创建一个新的xib选择文件在xib中定义子视图。。。用户界面,视图

可以按如下方式加载该视图:

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
现在可以将该新视图与任何其他子视图一样处理:

// assign it to a property
@property (strong, non atomic) UIView *viewFromXib;
@sythesize viewFromXib=_viewFromXib;

self.viewFromXib = newView;

// add it to your hierarchy
self.viewFromXib.frame = CGRectMake( /* this will start out 0,0 the size from the xib */ );
[self.view addSubview:self.viewFromXib];

// add gesture recognizer
UITapGestureRecognizer *tapGR =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.viewFromXib addGestureRecognizer:tapGR];

。。。依此类推

您可以通过创建xib选择文件New。。。用户界面,视图

可以按如下方式加载该视图:

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
现在可以将该新视图与任何其他子视图一样处理:

// assign it to a property
@property (strong, non atomic) UIView *viewFromXib;
@sythesize viewFromXib=_viewFromXib;

self.viewFromXib = newView;

// add it to your hierarchy
self.viewFromXib.frame = CGRectMake( /* this will start out 0,0 the size from the xib */ );
[self.view addSubview:self.viewFromXib];

// add gesture recognizer
UITapGestureRecognizer *tapGR =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.viewFromXib addGestureRecognizer:tapGR];

。。。依此类推

上述代码几乎正确,但除了

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
应该是

UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil] objectAtIndex:0];
在视图控制器中,只需添加

[self.view addSubview:newView];

上面的代码几乎正确,但除了

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
应该是

UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil] objectAtIndex:0];
在视图控制器中,只需添加

[self.view addSubview:newView];

是的,你是对的,我误读了问题的一部分,从某处插入了另一个视图控制器。是的,你是对的,我误读了问题的一部分,从某处插入了另一个视图控制器。