我创建了三个文件: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