-[UIView setContentSize:]:无法识别的选择器发送到实例 0x16d3be60

And*_*lli 2 iphone objective-c uiscrollview uiview ios

我正在遵循 Apple 的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是类型。我控制并从控制器拖动到滚动视图,如教程中所示,滚动视图似乎已注册为该控制器中的视图,如以下屏幕截图所示:UIViewUIScrollView

在此输入图像描述

我尝试单击视图中的“x”,这样滚动视图将只是控制器中的视图,但没有效果(如灰显所示)。

我缺少什么?

顺便说一下,这是崩溃的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Setup scroll size
    UIScrollView *view = (UIScrollView*)self.view;
    view.contentSize = CGSizeMake(self.view.frame.size.width, 960);
}
Run Code Online (Sandbox Code Playgroud)

hol*_*lex 5

在创建一个全新的 之后我会这样做UIViewController

\n

\n

自定义类基本上是UIView.

\n

前

\n

\n

我已将自定义类显式更改为UIScrollView,这几乎就是您需要实现的工作。

\n

后

\n
\n

从那时起,您可以在类中强制转换并使用self.viewas ,因为它是 的实例。UIScrollViewUIScrollView

\n
\n
\n

属性检查器更新

\n

基本上,该解决方案不会更新最初创建的xib文件的标签,并且它仍然被Attributes InspectorXML识别。UIView

\n

如果这是一个全新的空视图您可以将新视图拖放UIScrollViewxib文件中,并可以将其正确连接到文件所有者view例如:

\n

重新连接视图属性

\n

正确的结果:

\n

滚动视图是新的

\n

之后可以删除原始视图,因为它不再连接到File\'s Owner

\n

高级模式

\n

如果您的视图中已经有很多子视图,则复制粘贴的方式可能不适用于上述关于交换视图的轻松解决方案 \xe2\x80\x93 您可以与文件建立完整的联系XML\xe2\x80\x93如果您觉得有足够的经验和信心来手动编辑该文件!如果您有任何疑问,请不要XML直接触摸或编辑该文件!

\n

如果是,您只需将主标签从 更新viewscrollView,例如:

\n

视图标签 滚动视图标签

\n
\n

在进行任何更改后,属性检查器都会将视图视为 UIScrollView.

\n