0

我有一个UIView有两个子元素的a:UIScrollView上半部分(包含两个UILabels)和UITableView底部的a。这基本上是一个字典,滚动视图的目的是显示单词和定义,以及显示相关单词的表格视图。并非字典中的所有单词都有与之关联的相关单词数组,因此我隐藏了UITableView该数组为空的情况。

但是,当隐藏时,我无法UIScrollView填充整个父视图。UITableView这是我到目前为止所尝试的:

- (void)updateUIWithWord:(NSString *)theWord
           andDefinition:(NSString *)theDefinition
    andRelatedWordsArray:(NSArray *)theRelatedWordsArray {
    self.navigationItem.title = theWord;
    self.word.text = theWord;
    self.definition.text = theDefinition;
    self.relatedWordsArray = theRelatedWordsArray;

    if (![relatedWordsArray count]) {
        relatedWordsTableView.hidden = YES;

        // set the UITableView's width and height to 0 just to be sure
        // I feel this isn't needed though
        CGRect relatedWordsTableViewFrame;
        relatedWordsTableViewFrame.size = CGSizeMake(0, 0);
        relatedWordsTableView.frame = relatedWordsTableViewFrame;

        // then make the scroll view occupy the remaining height;
        // that is, the self.view's actual height
        CGRect scrollViewFrame;
        scrollViewFrame.origin = CGPointMake(0, 0);
        scrollViewFrame.size = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
        scrollView.frame = scrollViewFrame;
    }
}

简单地说,这是行不通的。对于任何没有相关词且定义很长的词,滚动视图仅占据相同的高度,即使表格视图消失。帮助?

添加:我尝试修复 中的约束UIScrollView以使其相对于顶部UITableView而不是具有固定高度,但这似乎是不可能的。

4

2 回答 2

1

你有一个“if”和一个“else”。只有其中一个会执行。因此,当“if”部分运行并relatedWordsTableView.hidden设置为 YES 时,表格视图被隐藏,但没有其他任何事情发生。“其他”部分没有运行,所以什么也没有发生。

于 2013-03-25T15:08:33.753 回答
0

以不同的方式解决问题。我把它UIScrollView占据了整个屏幕并将它放在UITableView里面,在我的两个标签下面,禁用滚动。现在我可以隐藏和显示它。

于 2013-03-29T03:40:42.147 回答