我想在我的控制器中实现UIScrollView
,因为视图的高度大于iphone屏幕尺寸。
我在故事板中设计了我的视图,我在.h文件中创建了IBOutlet
在.m中,我正在执行以下操作来创建UIScrollView
:
-(void) addScrollView
{
UIScrollView* ScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.ScrollView addSubview:self.myStoryBoardView];
self.ScrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:self.ScrollView];
}
在上面的最后一行中,它进入无限循环。 请建议
答案 0 :(得分:1)
替换此行:
UIScrollView* ScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
使用:
self.ScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
<强>说明:强>
您正在UIScrollView
方法中初始化单独的本地addScrollView
。本地对象声明会覆盖类实例的对象声明。但是遵循以下代码行:
[self.ScrollView addSubview:self.myStoryBoardView];
self.ScrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:self.ScrollView];
在您的类实例UIScrollView
的对象上调用,该对象未初始化。这就是为什么当你在任何对象上添加未初始化的对象作为子视图时,你的应用程序会崩溃。
答案 1 :(得分:0)
您似乎创建了一个UIScrollview(称为ScrollView),但您添加了self.ScrollView,它可能是在Storyboard中定义的IBOutlet属性(在界面中的.h或.m文件中)。试试这段代码,摆脱故事板中的UIScrollView。 也不要使用ScrollView,而是使用scrollView作为苹果文档建议。
-(void) addScrollView
{
UIScrollView* scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[scrollView addSubview:self.myStoryBoardView];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:scrollView];
}
答案 2 :(得分:0)
他是对的。在故事板中或从代码中添加滚动视图。您将滚动视图的高度设置为等于self.view的高度,而不是将height设置为self.myStoryBoardView。
-(void) addScrollView
{
UIScrollView* scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[scrollView addSubview:self.myStoryBoardView];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.myStoryBoardView.frame.size.height);
[self.view addSubview:scrollView];
}