两个 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概念上的问题

首先我们从问题开始:

你有一个数组 UIButtonUIButton可以添加到类中 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 一个不显示内容的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发UI篇—UIScrollView控件实现图片缩放功能

iOS开发UI篇—UIScrollView控件介绍

iOS开发UI篇—UIScrollView控件介绍

为啥使用情节提要在 UIScrollView 中不显示内容

UIScrollView的缩放原理

UIScrollView 不显示动态添加的内容