繁体   English   中英

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

[英]Add a scrollView to a view in .xib file

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

在我的UIView中,我有另一个UIView(中间的while屏幕),并且我想以编程方式向其中添加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 你能帮助我吗?

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

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

您还可以通过以下方式在xib文件中设置scrollView的委托:右键单击它,并将委托旁边的圆圈(在“出口”下)拖到“文件所有者”(假设文件所有者是实现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时将已经自动创建了滚动视图。

通过在界面构建器中添加UIScrollView,然后从那里设置委托和文件所有者,我可以成功地做到这一点。

我只需要注意,由于我要将UIView添加到情节提要中的ViewController,因此此代码不起作用:

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

我应该使用:

UIView *newPageView = [views objectAtIndex:0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM