0

UIView2つの子要素を持つaがUIScrollViewあります。aは上半分(2つUILabelのsを含む)にあり、aUITableViewは下半分にあります。これは基本的に辞書であり、スクロールビューの目的は単語と定義を表示することであり、テーブルビューは関連する単語を表示することです。辞書のすべての単語に関連する単語配列が関連付けられているわけではないので、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」があります。そのうちの1つだけが実行されます。したがって、「if」部分が実行relatedWordsTableView.hiddenされ、YESに設定されている場合、テーブルビューは非表示になりますが、それ以外は何も起こりません。「else」部分が実行されていないため、何も発生していません。

于 2013-03-25T15:08:33.753 に答える
0

別の方法で問題に取り組みました。画面全体をUIScrollView占めるようにUITableViewし、スクロールを無効にして、画面の内側の2つのラベルの下に配置しました。これで、非表示にして表示することができます。

于 2013-03-29T03:40:42.147 に答える