具有不同UIView子类和XIB文件的演示应用程序

时间:2014-02-27 08:34:41

标签: ios iphone objective-c uiview uiscrollview

我正在制作包含50张幻灯片的演示应用。每张幻灯片都可以包含按钮,视频......

所以我在想这样做。我创建了50个类,它们是UIView的子类,每个类都有自己的xib文件。有了这个,我可以在UIView上添加不同的按钮,并使用delegate methods来处理它们。

然后我有一个MainViewController带有页眉和页脚图像,中间有一个scrollView。我像这样加载XIB文件。

  UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"page1" owner:self options:nil] objectAtIndex:0];

将所有这些UIViews放在NSArray中,然后通过循环scrollView

将它们置于NSArray
for (int i = 0; i < arrViews.count; i++) {
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;

    UIView *view = [arrViews objectAtIndex:i];
    [view setFrame:frame];

[self.scrollView addSubview:view];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * arrViews.count,scrollView.frame.size.height);

所以我有以下classes

Page1.h (subclassed from UIVIew)
Page1.m 
MainViewController.h (subclassed from UIViewController)
MainViewController.m

现在我的问题是,我怎么能说我创建的UIViews(UIView * rootView)应该使用Page1的类。

1 个答案:

答案 0 :(得分:0)

在故事板中,您必须将Class更改为自定义类。因此,例如在您的page1 XIB中,您必须转到Identity Inspector(第3个选项卡)并在Class文本框中键入Page1,对于下一页,您必须再次执行此操作。在这种情况下,您可以调用rootView,如:

Page1 *rootView = (Page1*)[[[NSBundle mainBundle] loadNibNamed:@"page1" owner:self options:nil] objectAtIndex:0];

希望得到这个帮助。