1

我一直在寻找有关如何执行此操作的信息,但没有发现任何我理解的信息。

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

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

希望有人可以提供帮助。谢谢!

4

3 回答 3

5

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

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

至于处理手势,你可以在MyOtherViewController课堂上处理它们,或者制作一个容器视图并在你的ViewController. 不要忘记它们是子视图,并且任何动作都应该与它们的父视图相关。

于 2012-09-29T18:55:30.323 回答
2

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

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];
于 2013-08-16T07:20:27.813 回答
0

您可以通过创建 xib 来定义 xib 中的子视图(选择 File New...“user interface”、“view”)。

您可以像这样加载该视图:

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];

... 等等

于 2012-09-29T19:45:38.340 回答