2012-10-05 56 views
0

我有一個包含UIView和UIScrollView的xib文件。我有另一個UIView(在中間的屏幕),我想以編程方式添加我的scrollView。將scrollView添加到.xib文件中的視圖

原因是有一次我想添加一個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

那麼,請告訴我setPageId:方法/屬性?它在哪裏被稱爲?會像object.pageId =東西;你的錯誤是因爲你調用setPageId的對象沒有實現該方法。無論是或者你有一個代碼認爲仍然有效的解除分配的對象。 – Matt

回答

1

我可以通過在界面構建器中添加一個UIScrollView,然後從那裏設置委託和文件所有者來成功地完成這項工作。

我只是要注意的是,因爲我想了UIView添加到視圖控制器在故事板這個代碼將無法正常工作:

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

我應該使用:

UIView *newPageView = [views objectAtIndex:0]; 
3

你得到的錯誤是不是在您粘貼代碼,那是因爲你可能有一些代碼,如self.scrollView.pageId = ...別的地方不管是

,以幫助你達到你想要的效果,你可能應該在屏幕中間的MKMapView,UIScrollView和白色UIView的IBOutlet引用添加到你的視圖控制器。

你也可以通過右鍵點擊它並將代理旁邊的圓圈拖放到文件所有者(假設文件所有者是實現UIScrollViewDelegate的UIViewController)來設置scrollView的代理

然後在viewDidLoad中你有這樣的事情

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

你不應該分配/初始化滾動視圖中的代碼手動因爲你已經在廈門國際銀行文件有它存在,它會已經被自動創建在您的控制器中調用viewDidLoad時。

+0

+1爲您的幫助,謝謝。 – Ali

相關問題