1

私はこれと非常に混乱しています。

Xcode の単一のビュー テンプレートを使用して、プログラムでグループ化された UITableView を作成しようとしています。いくつかの例についてインターネットを見ると、秘密はありません。これを行うためのアプローチは非常に簡単です。メソッド tableView:cellForRowAtIndexPath: が呼び出されることはありませんが、他のメソッドが呼び出されて整数 > 0 を返すため、実装が間違っているか正しいかはわかりません。

コードがあります。提案は大歓迎です。ありがとう、

#import "ViewController.h"
#import "SimpleCell.h"

@interface ViewController () <UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *table;
@property (nonatomic, strong) NSArray *sections;
@property (nonatomic, strong) NSArray *section1;
@property (nonatomic, strong) NSArray *section2;
@property (nonatomic, strong) NSArray *section3;

@end

@implementation ViewController

static NSString * const CellIdentfier = @"Cell";


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

    [self.view addSubview:self.table];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[table]|"
                                                                      options:0
                                                                      metrics:nil
                                                                        views:@{@"table": self.table}]];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.table reloadData];
    });

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (UITableView *)table
{
    if(!_table)
    {
        _table = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
        _table.delegate = self;
        _table.dataSource = self;
        _table.translatesAutoresizingMaskIntoConstraints = NO;
        _table.rowHeight = 34.0f;
        _table.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        _table.backgroundColor = [UIColor grayColor];
        _table.showsVerticalScrollIndicator = NO;
        [_table registerClass:[SimpleCell class] forCellReuseIdentifier:CellIdentfier];
    }

    return _table;
}

- (NSArray *)sections
{
    if(!_sections)
    {
        _sections = @[@"Section1", @"Section2", @"Section3"];
    }

    return _sections;
}

- (NSArray *)section1
{
    if(!_section1)
    {
        _section1 = @[@"Player a", @"Player b", @"Player c"];
    }

    return _section1;
}

- (NSArray *)section2
{
    if(!_section2)
    {
        _section2 = @[@"Zone a", @"Zone b", @"Zone c"];
    }

    return _section2;
}

- (NSArray *)section3
{
    if(!_section3)
    {
        _section3 = @[@"Area a", @"Area b", @"Area c"];
    }

    return _section3;
}


#pragma mark - UI Table View Delegate impl


#pragma mark - UI Table View Datasource impl

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    DLog();
    SimpleCell *cell = [self.table dequeueReusableCellWithIdentifier:CellIdentfier];

    if(!cell)
        cell = [[SimpleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentfier];

    cell.label.text = [NSString stringWithFormat:@"Section: %i Row: %i", indexPath.section, indexPath.row];
    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSInteger total = 0;
    if(section == 0) total = self.section1.count;
    if(section == 1) total = self.section2.count;
    if(section == 2) total = self.section3.count;

    DLog(@"Rows: %i", total);

    return total;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    DLog();
    return self.sections.count;
}



@end
4

1 に答える 1

1

これを削除します:

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[table]|"
                                                                  options:0
                                                                  metrics:nil
                                                                    views:@{@"table": self.table}]];

それから呼び出されるはずです。

編集:

これも変更します。

  _table = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];

これで直るようですが、原因がわかりません。テーブルフレームが0より大きくなければならないことに関係していると思います。

于 2013-09-20T23:45:16.407 に答える