我創建了三個文件: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];
}
將發生錯誤。如果我刪除這三行,沒有錯誤。但是,這不是超級完全一樣的調用嗎?爲什麼區別?
你在哪裏創建UIScrollView? – NANNAV 2013-03-05 05:27:06
如果你從一個筆尖加載,通常你不會重載'loadView'。通常這些東西在'viewDidLoad'中設置。 – 2013-03-05 05:29:16
UIScrollView是在xib文件中創建的。我使用標準步驟從xib文件創建視圖。 – topduo 2013-03-05 05:47:06