2013-03-05 82 views
-1

我創建了三個文件:MyViewController.h,「我創造了一個的UIScrollView作爲根級元素MyViewController.m, MyViewController.xib. In the xib`文件,並作出其文件所有者所有必需的連接。UIScrollView中無法識別的選擇setMaximumZoomScale:

在我的.m文件中,我覆蓋了loadView方法來設置ScrollView的一些附加屬性。

-(void)loadView{ 
    [super loadView]; 
    UIScrollView *tmp = (UIScrollView *)[self view]; 
    [tmp setMaximumZoomScale:3.0];  // crashed here 
} 

但是,代碼墜毀在函數的最後一行,日誌說:

-[UIView setMaximumZoomScale:]: unrecognized selector sent to instance 0x1cda5d60 

似乎tmp被認定爲UIView,而不是UIScrollView儘管顯式轉換。我的理解是[super loadView];將從xib文件加載視圖並設置ViewController的視圖。它甚至在我將代碼行失敗移動到viewDidLoad函數時也沒有幫助。

編輯:

我發現類似的模式Apple的文檔site:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    UIScrollView *tempScrollView=(UIScrollView *)self.view; 

    tempScrollView.contentSize=CGSizeMake(1280,960); 

} 

編輯2:

我略爲收窄的問題。現在我已經將代碼投到[self view]viewDidLoad,並且只有當我覆蓋loadView時纔會出現錯誤。如果我添加

-(void)loadView{ 
    [super loadView]; 
} 

將發生錯誤。如果我刪除這三行,沒有錯誤。但是,這不是超級完全一樣的調用嗎?爲什麼區別?

+0

你在哪裏創建UIScrollView? – NANNAV 2013-03-05 05:27:06

+0

如果你從一個筆尖加載,通常你不會重載'loadView'。通常這些東西在'viewDidLoad'中設置。 – 2013-03-05 05:29:16

+0

UIScrollView是在xib文件中創建的。我使用標準步驟從xib文件創建視圖。 – topduo 2013-03-05 05:47:06

回答

0

檢查連接檢查來連接到文件所有者是否是這樣或者不進行滾動視圖...

見下面的圖片...

enter image description here

然後把你的代碼像這樣在viewDidLoad中......

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIScrollView *tempScrollView=(UIScrollView *)self.view; 
    [tempScrollView setMaximumZoomScale:3.0]; 

} 

這是工作對我罰款。

編輯2:

-(void)loadView{ 
    [super loadView]; 

    UIScrollView *tempScrollView=(UIScrollView *)self.view; 

    tempScrollView.contentSize=CGSizeMake(320,960); 
    [tempScrollView setBackgroundColor:[UIColor grayColor]]; 
    [tempScrollView setMaximumZoomScale:3.0]; 

} 

這也是工作對我罰款。

+0

爲什麼來自'[自我觀點]的演員陣容將無法工作? – topduo 2013-03-05 05:50:15

+0

默認情況下,文件所有者包含UIView類型的視圖,而UIScrollView僅從UIView派生。所以最好爲滾動視圖創建另一個iboutlet來訪問它。 – 2013-03-05 06:00:07

+0

請參閱我的編輯。我發現Apple使用這個轉換來訪問ScrollView,所以這不應該是一個問題(至少不是唯一的問題)。 – topduo 2013-03-05 06:10:04

相關問題