【问题标题】:Two UIScrollView one does not show content两个 UIScrollView 一个不显示内容
【发布时间】: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 显示按钮...

有什么想法吗?

对不起我的英语

【问题讨论】:

  • 文本视图在哪里?我看到了对滚动视图和按钮的引用,但没有看到文本视图。
  • 对不起,我的意思是滚动视图

标签: ios uiscrollview uiscrollviewdelegate


【解决方案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?
  • 另一个按钮数组是的..我不知道你需要做什么..但是一个按钮是一个实体..你不能同时在两个地方添加它。所以是的,你需要另一个带有其他按钮的数组。请将答案设置为正确,以便我们关闭主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2019-06-27
  • 2021-09-26
相关资源
最近更新 更多