自定义TableViewCell在我的TableView中显示为白色和空白

时间:2015-06-03 17:23:25

标签: ios objective-c uitableview

我创建了一个名为OptionsTableViewCell的自定义TableViewCell类和一个名为WPOptionsTableViewController的自定义TableViewController类。细胞总是空白的。这是我到目前为止所做的:

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds] ];
     WPOptionsViewController *vc = [[WPOptionsViewController alloc] init]
     UITableView *view = vc.tableView;
     [view registerClass:[OptionsTableViewCell class] forCellReuseIdentifier:@"OptionsTableViewCell"];

     self.window.rootViewController = vc;
     [self.window makeKeyAndVisible];
     return YES;
}

OptionsTableViewCell.m:

- (instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if ( self )
    {
        self.selectionStyle = UITableViewCellSelectionStyleNone;
        self.textLabel.textColor = [UIColor yellowColor];
    }

    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
     [super setSelected:selected animated:animated];
     [self highlight:selected];
}

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
     [super setHighlighted:highlighted animated:animated];
     [self highlight:highlighted];

}

- (void)highlight:(BOOL) highlight {
     UIColor *tintColor = [UIColor whiteColor];
     if ( highlight ) 
          tintColor = [UIColor colorWithWhite:1.0 alpha:0.6];

     self.textLabel.textColor = tintColor;
}

WPOptionsTableViewController.m:

- (void)viewDidLoad {
     [super viewDidLoad];

     self.tableView.delegate = self;
     self.tableView.dataSource = self;
     self.tableView.backgroundColor = [UIColor redColor];
     self.tableView.contentInset = UIEdgeInsetsMake(80, 0.0, 0.0, 0.0);
     self.clearsSelectionOnViewWillAppear = NO;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

// Return the number of rows in the section.
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     OptionsTableViewCell *cell = [[OptionsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"OptionsTableViewCell"];
     if ( indexPath.row == 0 )
         cell.textLabel.text = @"Home";
     if ( indexPath.row == 1 )
        cell.textLabel.text = @"Profile";
     if ( indexPath.row == 2 )
        cell.textLabel.text = @"Settings";
     return cell;
}

无需使用dequeueReusableCellWithIdentifier,因为我只有3行

编辑:我没有使用任何XIB文件。问题似乎出现在我的自定义单元格实现中,但我看不出有什么问题。

1 个答案:

答案 0 :(得分:0)

这是因为,您在OptionTableViewCell的高亮显示方法中将textColor设置为白色。默认情况下,由于未突出显示,突出显示的BOOL值将为NO。给出else条件并用黑色替换色调颜色。你可以看到文字。

UIColor *tintColor = [UIColor blackColor];