2012-06-08 3 views
0

Я создаю подкласс UIView (MultiColumnTableView), который будет содержать пару табличных представлений. Однако, когда я добавляю свой пользовательский просмотр в качестве подзадачи в контроллер просмотра, он никогда не отображается, и я действительно не могу понять, почему?Подкласс UIView не отображается

Я добавляю его с этим кодом на мой взгляд, корень контроллера:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    _multiColumnTableView = [[MultiColumnTableView alloc] initWithNumberOfColums:3 columnWidth:200 frame:CGRectMake(100, 100, 0, 400)]; 
    _multiColumnTableView.dataSource = self; 
    _multiColumnTableView.delegate = self; 


    [self.view addSubview:_multiColumnTableView]; 
    [_multiColumnTableView reloadData]; 
} 

Пользовательский класс инициализатор содержит следующий код:

- (id)initWithNumberOfColums:(NSInteger)columns columnWidth:(float)width frame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.numberOfColumns = columns; 
     self.columnWidth = columnWidth; 

     self.bounds = CGRectMake(0, 0, columnWidth * numberOfColumns, self.bounds.size.height); 

     _tableViews = [NSMutableArray new]; 

     // Create all the desired colums (= tableViews) 
     for (int i = 0; i < numberOfColumns; i++) { 
      UITableView *t = [[UITableView alloc] initWithFrame:CGRectMake(columnWidth * i, 0, columnWidth, self.bounds.size.height)]; 
      [_tableViews addObject:t]; 
      t.tag = i; 
      t.backgroundColor = [UIColor blueColor]; 
      t.dataSource = self; 
      t.delegate = self; 
      [self addSubview:t]; 
     } 

    } 
    return self; 
} 

Я ожидал увидеть некоторые синий стол но они не видны, и поэтому они никогда не вызывают cellForRowAtIndexPath :, но они вызывают номерOfRowsInSection. Мое пользовательское subview добавлено в корневой вид. При подсчете подпунктов он возвращает 1. Может ли кто-нибудь увидеть проблему?

+0

Для каждого стола в вашем представлении, следует ли ему называть «reloadData»? – Tom

+0

Да, и это так. У меня есть пользовательский reloadData в моем классе, который проходит через все из них. – Accatyyc

+0

Вы уверены, что ваша петля на самом деле попала? Я бы предложил Logging кадр каждого 'UITableView', чтобы убедиться, что это то, что вы ожидаете. – skram

ответ

1

проверить, что каждый кадр таблиц должным образом назначен.

+0

Спасибо за быстрый ответ. Я изменил высоту в исходном вопросе до 400. К сожалению, проблема сохраняется в зависимости от той высоты, которую я использую :( – Accatyyc

+0

Затем проверьте, правильно ли назначен каждый кадр таблиц. – Umgre

+0

Я думаю, что вы можете быть здесь. (0.000000, 0.000000, 0.000000, 400.000000). Я посмотрю дальше. – Accatyyc

0

сделать нижеследующий меняется внутри конструктор.

- (id)initWithNumberOfColums:(NSInteger)columns columnWidth:(float)width frame:(CGRect)frame 
{ 
    self = [super initWithFrame:CGRectMake(frame.origin.x, frame.origin.y, columns*width, frame.size.height)]; 
    if (self) { 
      self.numberOfColumns = columns; 
      self.columnWidth = columnWidth; 


      _tableViews = [NSMutableArray new]; 

       // Create all the desired colums (= tableViews) 
      for (int i = 0; i < numberOfColumns; i++) { 
       UITableView *t = [[UITableView alloc] initWithFrame:CGRectMake(columnWidth * i, 0, columnWidth, frame.size.height)]; 
       [_tableViews addObject:t]; 
       t.tag = i; 
       t.backgroundColor = [UIColor blueColor]; 
       t.dataSource = self; 
       t.delegate = self; 
       [self addSubview:t]; 
      } 

    } 
    return self; 
} 
+0

Я пробовал это, и это не имеет никакого значения. .. Поразмыслить, в чем разница, когда делаете это так? – Accatyyc

+0

Либо вы должны установить рамки или рамки. Я удалял границы везде, где они используются. Вы скопировали всю функцию и вложили ее в свой проект? – Apurv

+0

Да. Я согласен с тем, что ваш путь - лучший способ сделать это, и я изменил его на ваш код. Я не думаю, что это была проблема. – Accatyyc

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