У меня есть странная проблема.UIViewController показывает два UITableView
Я подклассифицирую UIViewController и добавляю свойство tableView, в котором загружаю UITableView. Теперь я добавляю этот UITableView в дочерние объекты родителя. Работает нормально, но я получаю TWO TableViews. Один стандартный стиль TableView и один из способов, которым я хотел, чтобы он был поверх стандартного. Однако оба содержат правильные данные.
@interface RootViewController : UIViewController <ABPersonViewControllerDelegate, UITableViewDelegate, UITableViewDataSource> {
UITableView *tableView;
ToolbarController *toolbar;
...
}
@property(nonatomic, retain) UITableView *tableView;
@property(nonatomic, retain) ToolbarController *toolbar;
...
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
CGRect mainViewBounds = self.parentViewController.view.bounds;
CGFloat toolbarHeight = 44;
toolbar = [[ToolbarController alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(mainViewBounds), toolbarHeight) parentView:self];
tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, toolbarHeight, CGRectGetWidth(mainViewBounds), CGRectGetHeight(mainViewBounds) - toolbarHeight) style:UITableViewStylePlain];
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tableView.rowHeight = 60.0;
[tableView tableView].delegate = self;
[tableView tableView].dataSource = self;
tableView.backgroundColor = [UIColor clearColor];
[self.parentViewController.view addSubview:tableView];
[self.parentViewController.view addSubview:toolbar];
}
@end
------ ОБНОВЛЕНО ------
Я просто неправильно вставили одна часть
[tableView tableView].delegate = self;
[tableView tableView].dataSource = self;
фактически в коде
tableView.delegate = self;
tableView.dataSource = self;
------- ОБНОВЛЕНИЕ 2 --------
Если я не создать свой собственный UITableView по
tableView = [[UITableView alloc] ...]
то есть один автоматически устанавливается для меня. Это было бы хорошо для меня ... Мне не нужно инициализировать один, но я не могу изменить рамку на стандартном.
tableView.frame = CGRectMake(0, toolbarHeight, CGRectGetWidth(mainViewBounds), CGRectGetHeight(mainViewBounds) - toolbarHeight);
Установка рамы не имеет никакого эффекта ...
Привет @bresc, я так понимаю, вы никогда не дошли до того, почему в вашем диспетчере просмотра появился второй стол? У меня такая же проблема. Так странно. Используя отладчик, я вижу, что мое свойство viewController's view устанавливается в объект UITableview после того, как я представляю его по-разному, но перед запуском viewDidLoad в контроллере представления. – kris
@kris Нет. Я не нашел решения. Мой проект был в основном в начале, когда у меня была проблема, поэтому я просто сделал эту часть совершенно другой, чтобы заставить ее работать. – 2011-12-01 19:07:14
Спасибо bresc. Единственное, что я заметил, это то, что добавив файл nib и загрузив из него контроллер вида, похоже, проблема исчезла. Я обновлю, если я когда-нибудь дойду до конца. – kris