两个 UIScrollView 一个不显示内容
Posted
技术标签:
【中文标题】两个 UIScrollView 一个不显示内容【英文标题】:Two UIScrollView one does not show content 【发布时间】:2014-05-14 22:01:52 【问题描述】:我有 2 个 UIScrollView:
- (void)generateHeadView
self.headArray = [[NSArray alloc]initWithArray:self.headButtonArray];
for (int i = 0; i < [self.headArray count]; i++)
UIButton *button0 = [[UIButton alloc]init];
button0 = [self.headArray objectAtIndex:i];
CGRect frame = CGRectMake(0, (self.playerScrollView.frame.size.height*i)+((self.playerScrollView.frame.size.height/2)-button0.frame.size.height/2), button0.frame.size.width, button0.frame.size.height);
button0.frame = frame;
[playerScrollView addSubview:button0];
playerScrollView.contentSize = CGSizeMake(self.playerScrollView.frame.size.width , self.playerScrollView.frame.size.height * [self.headArray count]);
和
- (void)generateEnemyHeadView
self.headArray = [[NSArray alloc]initWithArray:self.headButtonArray];
for (int i = 0; i < [self.headArray count]; i++)
UIButton *button1 = [[UIButton alloc]init];
button1 = [self.headArray objectAtIndex:i];
CGRect frame = CGRectMake(0, (self.enemyScrollView.frame.size.height*i)+((self.enemyScrollView.frame.size.height/2)-button1.frame.size.height/2), button1.frame.size.width, button1.frame.size.height);
button1.frame = frame;
[enemyScrollView addSubview:button1];
enemyScrollView.contentSize = CGSizeMake(self.enemyScrollView.frame.size.width , self.enemyScrollView.frame.size.height * [self.headArray count]);
如果我删除 [enemyScrollView addSubview:button1];
然后 1 UIScrollView 显示按钮,但当我添加 [enemyScrollView addSubview:button1];
然后只有 2 UIScrollView 显示按钮...
有什么想法吗?
对不起我的英语
【问题讨论】:
文本视图在哪里?我看到了对滚动视图和按钮的引用,但没有看到文本视图。 对不起,我的意思是滚动视图 【参考方案1】:这段代码,有很多OOP概念上的问题。
首先我们从问题开始:
你有一个数组 UIButton
。
UIButton
,可以添加到类中 UIView
(或类似的)。
所以,这个按钮,只能有1个SUPERVIEW。
也就是说,如果你在view1上添加按钮,你会在view1上看到它; 但如果在 view2 上添加此按钮后,您将在 view2 上看到它,而在 view1 上看不到。
你能同时在两个地方吗?
其他事情..更好的代码可能是这样的:
- (void)generateHeadView
self.headArray = [self.headButtonArray copy];
//if self.headButtonArray is mutable use copy otherwise no.
for (int i = 0; i < [self.headArray count]; i++)
@autorelease
UIButton *button0 = [self.headArray objectAtIndex:i];
button0.frame = CGRectMake(0, (self.playerScrollView.frame.size.height*i)+((self.playerScrollView.frame.size.height/2)-button0.frame.size.height/2), button0.frame.size.width, button0.frame.size.height);
[playerScrollView addSubview:button0];
playerScrollView.contentSize = CGSizeMake(self.playerScrollView.frame.size.width , self.playerScrollView.frame.size.height * [self.headArray count]);
对于另一个是一样的。显然,您需要另外一组按钮,这样您就不能在headButtonArray
中使用相同的按钮..但是您需要另外一组按钮..或者更改策略。
【讨论】:
所以我必须创建另一个 UIButton 和 NSArray? 另一个按钮数组是的..我不知道你需要做什么..但是一个按钮是一个实体..你不能同时在两个地方添加它。所以是的,你需要另一个带有其他按钮的数组。请将答案设置为正确,以便我们关闭主题。以上是关于两个 UIScrollView 一个不显示内容的主要内容,如果未能解决你的问题,请参考以下文章