我正在关注Apple的Scroll View Programming Guide for iOS。它接缝非常简单,但我收到了这个错误:
-[UIView setContentSize:]: unrecognized selector sent to instance 0x16d3be60
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setContentSize:]: unrecognized selector sent to instance 0x16d3be60'
我按照在Interface Builder中创建滚动视图中的步骤进行操作。很明显self.view
属于UIView
类型,应该是UIScrollView
。我控制+从控制器拖动到滚动视图,如教程中所示,似乎滚动视图在此控制器中注册为视图,如下面的屏幕截图所示:
我尝试在View中单击“x”,因此Scroll View只能在控制器中查看,但不起作用(因为灰显表示)。
我错过了什么?
顺便说一句,这是崩溃的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Setup scroll size
UIScrollView *view = (UIScrollView*)self.view;
view.contentSize = CGSizeMake(self.view.frame.size.width, 960);
}
答案 0 :(得分:4)
我会在创建全新 UIViewController
之后执行此操作:
自定义类基本上是UIView
的一个实例。
我已将自定义类明确更改为UIScrollView
,这几乎就是工作,您需要实现它。
从那时起,您可以在类中投射并使用self.view
作为UIScrollView
,因为它是UIScrollView
的纯实例。
基本上该解决方案不会更新最初创建的xib
文件的XML
标记,并且只能通过属性检查器将其识别为UIView
。< / p>
如果是全新的和空视图,您可以将新的UIScrollView
拖放到xib
文件中,可以正确地将它连接到文件的所有者的view
,例如:
正确的结果:
之后可以删除原始视图,因为它不再连接到文件的所有者。
如果您的视图中已经有很多子视图,那么使用上面提到的关于交换视图的轻松解决方案,复制粘贴方式可能对您不起作用 - 您可以建立完全联系使用XML
文件 - ,如果您觉得有足够的经验并且有足够的信心手动编辑该文件! 如果您有任何疑问,请勿触摸或编辑直接XML
文件!
如果是,则您需要仅将view
更改为scrollView
,例如:
在进行任何更改后,属性检查器会将视图视为纯 UIScrollView
。
答案 1 :(得分:1)
您在此声明中使用的强制转换运算符:UIScrollView *view = (UIScrollView*)self.view;
不会将UIView
实例转换为UIScrollView
实例。
将.xib / .storyboard中的滚动视图添加到视图控制器的视图中,并为其添加插座。