2013-03-25 2 views
0

У меня есть UIView, который имеет два дочерних элемента: a UIScrollView в верхней половине (который содержит два UILabel s) и UITableView внизу. Это в основном словарь, и цель представления прокрутки - отображать слово и определение, а также представление таблицы для отображения связанных слов. Не все слова в моем словаре имеют связанный с ними связанный массив слов, поэтому я скрываю UITableView, когда этот массив пуст.Как заставить UIScrollView занимать высоту экрана, когда 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; 
    } 
} 

Проще говоря, это не работает. Для любого слова, которое не имеет связанных слов и очень длинного определения, вид прокрутки просто занимает такое же количество высоты, даже если стол не исчез. Помогите?

ADD: Я попытался фиксируя ограничения в UIScrollView, чтобы сделать его по отношению к верхней части UITableView вместо того, фиксированную высоту, но это не представляется возможным.

+0

Вы уверены, что все «IBOutlet's» связаны? – tia

+0

Yup, все IBOutlets подключены правильно. –

ответ

0

Приблизился к проблеме по-другому. Я сделал UIScrollView занять весь экран и поместил в него UITableView, под моими двумя ярлыками, с отключенным scrollling. Теперь я могу просто скрыть и показать его.

1

У вас есть «если» и «еще». Только один из тех, кто собирается выполнить. Поэтому, когда выполняется «if», и relatedWordsTableView.hidden установлено в YES, представление таблицы скрыто, но ничего больше не происходит. Часть «else» не работает, так что ничего не происходит.

+0

Ой, я не могу поверить, что совершил эту ошибку. Перемещено все из блока else в блок if и полностью удалено. Тем не менее, все еще не работает. –

+0

Итак, что же происходит? (И снова, вы уверены, что этот код даже работает?) – matt

Смежные вопросы