tableView没有显示任何内容

时间:2012-12-29 13:50:25

标签: objective-c tableview

我确定我的代码是错误的,因为我有两个相同的tableViews,两个代码相同,内容相同,设计相同。但我不明白为什么我的一个tableViews被显示,另一个不是。我正在使用Dynamic Prototype Content,Grouped Style,并且两个tableView都在其他ViewController的容器视图中。这是代码:

table.h

#import <UIKit/UIKit.h>

@interface table : UIViewController <UITableViewDataSource, UITableViewDelegate>

{
    NSArray *tabledata;
    NSIndexPath* checkedIndexPath;
}
@property (nonatomic, retain) NSArray *tabledata;
@property (nonatomic, assign) int number;
@property (nonatomic, retain) NSIndexPath* checkedIndexPath;
@property (strong, nonatomic) IBOutlet UITableView *tableView;
+(table*)instance;
@property (nonatomic) NSInteger selectedRow;

@end

table.m

#import "table.h"

@interface table ()

@end

@implementation table
@synthesize tabledata;
@synthesize tableView;
@synthesize checkedIndexPath;
@synthesize number;
+(InstrumentsI*)instance {
    static table *statInst;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        statInst = [[table alloc] init];
    });
    return statInst;
}
@synthesize selectedRow;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    tabledata = [[NSArray alloc] initWithObjects:@"row1", @"row2", @"row3", nil];
    self.selectedRow = 0;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - TableView Data Source methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [tabledata count];
}

- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    cell = [tableview dequeueReusableCellWithIdentifier:@"identifer"];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"identifer"];
    }

    cell.textLabel.text = [tabledata objectAtIndex:indexPath.row];

    if (indexPath.row == self.selectedRow)
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

#pragma mark TableView Delegate methods

- (void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [table instance].selectedRow = indexPath.row;
    if (indexPath.row != self.selectedRow) {
        self.selectedRow = indexPath.row;
    }
    [tableView reloadData];
}


- (void)viewDidUnload {
    [self setTableView:nil];
    [super viewDidUnload];
}
@end

2 个答案:

答案 0 :(得分:1)

检查是否已实现所有委托和数据源方法。

同时确认您已将文件的所有者或控制器设置为委托和数据源。

答案 1 :(得分:0)

尝试在加载数据后重新加载tableview,例如:

- (void)viewDidLoad
{
    [super viewDidLoad];
    tabledata = [[NSArray alloc] initWithObjects:@"row1", @"row2", @"row3", nil];
    self.selectedRow = 0;
    [self.tableView reloadData];
}