0

私はいくつかのテーブル ビューを保持する UIView (MultiColumnTableView) のサブクラスを作成しています。ただし、カスタム ビューをサブビューとしてビュー コントローラーに追加すると、ビュー コントローラーが表示されなくなり、その理由が本当にわかりません。

ルート ビュー コントローラーに次のコードを追加しています。

- (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: を呼び出すことはありませんが、numberOfRowsInSection を呼び出します。カスタム サブビューがルート ビューに追加されます。サブビューをカウントすると、1 が返されます。誰でも問題を確認できますか?

4

2 に答える 2

1

テーブルビューの各フレームが適切に割り当てられていることを確認してください。

于 2012-06-08T07:15:04.297 に答える
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;
}
于 2012-06-08T07:17:37.277 に答える