我有一个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
。你能救我吗?
答案 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];