我有一个UIScrollView
(代码中的self.scroller
),我想根据数组中对象的数量设置其大小,但当视图出现时,我得到一个错误。错误:
由于未捕获异常而终止应用程序:'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];
}
我做错了什么吗?我该怎么修呢?(我只想看到高度)如果有帮助的话。
这里有几个问题。首先,您的内存发生了错误,因此self.scroller
不再代表UIScrollView
实例的地址。另一类对象在0x8076080
,它不是UIScrollView
。
很可能是一个字符串,这个提示来自上面的异常细节。
出现这个问题的原因有很多。首先,您需要通过检查如何处理内存管理来调试该问题。可能你有self.scroller
作为一个弱引用,并且运行时已经释放了该对象。
接下来,我认为你设置的UIScrollView
大小不正确。理解UIScrollView
有两种尺寸。首先,它的视图的大小。这就是你在应用中看到的"视口"。其次,内容本身的大小。要使滚动视图滚动,必须有比视图端口内可见的更多的内容。否则就没有东西可以滚动了,对吧?
所以,我猜你想要设置self.scroller.contentSize
而不是视图本身的框架。