UIScrollView进行无限递归

时间:2014-06-04 11:35:18

标签: ios objective-c uiscrollview

我想在我的控制器中实现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];   
}

在上面的最后一行中,它进入无限循环。 请建议

3 个答案:

答案 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];

}