0

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

在我的 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。你能帮助我吗?

4

2 回答 2

3

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

不管怎样,为了帮助您实现您想要的效果,您可能应该将屏幕中间的 MKMapView、UIScrollView 和白色 UIView 的 IBOutlet 引用添加到您的视图控制器。

您还可以通过右键单击它并将委托旁边的圆圈(在 Outlets 下)拖动到文件所有者(假设文件所有者是实现 UIScrollViewDelegate 的 UIViewController),在您的 xib 文件中设置滚动视图的委托

然后在 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 时自动创建。

于 2012-10-05T23:50:47.110 回答
1

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

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

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

我应该使用:

UIView *newPageView = [views objectAtIndex:0];
于 2012-10-06T14:58:38.980 回答