Почему мой TTTableViewController не появляется - PullRequest
1 голос
/ 08 апреля 2010

У меня есть приложение, которое содержит вид прокрутки с двумя подпредставлениями (для прокрутки влево и вправо между ними)

Оба представления отображаются правильно, и прокрутка между представлениями работала нормально. Теперь я хочу изменить первое представление на TTTableView (предоставлено Three20), но когда я использую класс TableControlsTestController из приложения TTCatalog, все, что я вижу, это пустой tableView

Обратите внимание, что этот класс содержит все данные для отображения 6 ячеек

Чтобы добавить новый TTTableView, я использую следующее

 [scrollView addSubview:detailView.view];

, где detailView - это экземпляр TableControlsTestController

Чтобы попытаться выяснить, в чем проблема, я также попытался позвонить

[self presentModalViewController:detailView animated:YES];

Это правильно отображает табличное представление с 6 ячейками.

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


Для справки, если у вас нет доступа к TTCatalog

#import "TableControlsTestController.h"

///////////////////////////////////////////////////////////////////////////////////////////////////

@implementation TableControlsTestController

///////////////////////////////////////////////////////////////////////////////////////////////////
// NSObject

- (id)init {
  if (self = [super init]) {
    self.tableViewStyle = UITableViewStyleGrouped;
    self.autoresizesForKeyboard = YES;
    self.variableHeightRows = YES;

    UITextField* textField = [[[UITextField alloc] init] autorelease];
    textField.placeholder = @"UITextField";
    textField.font = TTSTYLEVAR(font);

    UITextField* textField2 = [[[UITextField alloc] init] autorelease];
    textField2.font = TTSTYLEVAR(font);
    textField2.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    TTTableControlItem* textFieldItem = [TTTableControlItem itemWithCaption:@"TTTableControlItem"
                                                            control:textField2];

    UITextView* textView = [[[UITextView alloc] init] autorelease];
    textView.text = @"UITextView";
    textView.font = TTSTYLEVAR(font);

    TTTextEditor* editor = [[[TTTextEditor alloc] init] autorelease];
    editor.font = TTSTYLEVAR(font);
    editor.backgroundColor = TTSTYLEVAR(backgroundColor);
    editor.autoresizesToText = NO;
    editor.minNumberOfLines = 3;
    editor.placeholder = @"TTTextEditor";

    UISwitch* switchy = [[[UISwitch alloc] init] autorelease];
    TTTableControlItem* switchItem = [TTTableControlItem itemWithCaption:@"UISwitch" control:switchy];

    UISlider* slider = [[[UISlider alloc] init] autorelease];
    TTTableControlItem* sliderItem = [TTTableControlItem itemWithCaption:@"UISlider" control:slider];

    self.dataSource = [TTListDataSource dataSourceWithObjects:
      textField,
      editor,
      textView,
      textFieldItem,
      switchItem,
      sliderItem,
      nil];
  }
  return self;
}

@end

1 Ответ

2 голосов
/ 09 апреля 2010

Оказывается, что некоторые события не распространялись через scrollView и поэтому не обрабатывались в TTTableViewController. Чтобы исправить это, я должен был сделать следующее в моем scrollView

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [myNewTTViewController viewWillAppear:NO];
}


- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  [myNewTTViewController viewDidAppear:NO];
}

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [myNewTTViewController viewWillDisappear:NO];
}

- (void)viewDidDisappear:(BOOL)animated {
  [super viewDidDisappear:animated];
  [myNewTTViewController viewDidDisappear:NO];
}

Как только я это сделал, стол ожил

...