2013-06-03 66 views
0

我有一个UIScrollView(在代码中),我想根据数组中的对象数量来设置它的大小,但出现视图时出现错误。错误:UIScrollView设置大小

终止应用程序由于未捕获的异常:'NSInvalidArgumentException', reason: '-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x8076080'

这里是有问题的代码:

for (int i = 0; i < [scoresArray count]; i++) 
{   
     UILabel *scoreLabel = [scoresArray objectAtIndex:i]; 

     CGRect labelPos = CGRectMake(10, i * 50, 300, 50); 

     [scoreLabel setFrame:labelPos]; 

     [self.scroller setFrame:CGRectMake(0, 90, 320, ([scoresArray count] * 50))]; 

     [self.scroller addSubview:scoreLabel]; 
} 

难道我做错了什么?我该如何解决呢? (我只想挑高)如果有帮助的话。

+0

你确定'scoresArray'包含指向'UILabel'的指针,而不是'NSString's? – Alexander

回答

1

这里有几个问题。首先,您的内存发生错误,因此self.scroller不再代表UIScrollView实例的地址。其他类别的对象是0x8076080,它不是UIScrollView

最有可能的是,它是一个字符串,并且该提示来自上面的异常详细信息。

此问题可能由于多种原因而发生。首先,您需要通过查看处理内存管理的方式来调试该问题。可能你有self.scroller作为弱引用,并且运行时已经释放了该对象。

接下来,我认为您错误地设置UIScrollView大小。了解UIScrollView有两种尺寸。首先,它的视图的大小。这是您在应用内看到的“查看端口”。其次,内容本身的大小。对于要滚动的滚动视图,必须有比视图端口内可见更多的内容。否则,没有什么可滚动的,对吧?

所以,我的猜测是你想要设置self.scroller.contentSize而不是视图本身的框架。