将scrollView添加到.xib文件中的视图

时间:2012-10-05 23:08:39

标签: iphone objective-c ios xcode xib

我有一个xib文件包含一个UIView和一个UIScrollView。

在我的UIView中,我有另一个UIView(中间的屏幕),我想以编程方式添加我的scrollView。

原因是有一次我想在那里添加一个scrollView,另一次我想添加一个mapView。

我做的是这样的:

CGRect frame = self.view.bounds;
    self.scrollView = [[UIScrollView alloc] initWithFrame: frame];
    CGSize pagesScrollViewSize = self.view.frame.size;
    self.scrollView.contentSize = CGSizeMake(pagesScrollViewSize.width * self.pageImages.count, pagesScrollViewSize.height);

我还需要为UIScrollView设置委托。

我无法使它发挥作用。这是我的错误:

-[UIScrollView setPageId:]: unrecognized selector sent to instance 0x7dd84e0
2012-10-06 00:56:17.373 testN[3525:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIScrollView setPageId:]: unrecognized selector sent to instance 0x7dd84e0'

我也不知道在哪里可以连接scrollView delegate。你能救我吗?

2 个答案:

答案 0 :(得分:3)

您获得的错误不在您粘贴的代码中,这是因为您可能有一些代码,例如self.scrollView.pageId = ...其他地方

无论如何,为了帮助您实现您想要的效果,您应该将屏幕中间的MKMapView,UIScrollView和白色UIView的IBOutlet引用添加到视图控制器。

你也可以在你的xib文件中设置scrollView的委托,方法是右键单击它并将委托旁边的圆圈(在Outlets下面)拖到文件所有者(假设文件所有者是一个实现UIScrollViewDelegate的UIViewController)

然后在viewDidLoad中你会有这样的东西

- (void)viewDidLoad {
    [super viewDidLoad];

    self.scrollView.contentSize = self.scrollView.frame.size;
    self.scrollView.frame = self.whiteCenterView.bounds;
    [self.whiteCenterView addSubview:self.scrollView];
}

你不应该在代码中手动分配/初始化滚动视图,就像你已经在xib文件中那样,并且它已经在你的控制器中调用viewDidLoad时自动创建。

答案 1 :(得分:1)

我可以通过在界面构建器中添加UIScrollView成功地完成此操作,然后从那里设置委托和文件所有者。

我应该注意,因为我想在故事板中将UIView添加到ViewController,这段代码不起作用:

NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"OfferView" owner:self options:nil];
UIView *newPageView = [views lastObject];

我应该使用:

UIView *newPageView = [views objectAtIndex:0];