2010-08-26 22 views
6

我想知道爲什麼當我將所選屬性設置爲ON時,此代碼會給我黑色的UITableViewCells。如果我這樣做,細胞內容完全變黑,我不知道爲什麼。UITableViewCell以編程方式選擇時變爲黑色

下面的代碼

// 
// TableViewAdapter.m 
// TableviewScanMode 
// 
// Created by Nick Overdijk on 8/26/10. 
// Copyright 2010 Nick Overdijk. All rights reserved. 
// 

#import "TableViewAdapter.h" 
#import "Model.h" 

@implementation TableViewAdapter 

@synthesize model; 

- (id) initWithModel: (Model*) model { 
    self = [super init]; 
    if(self != nil){ 
     self->model = [model retain]; 
    } 

    return self; 
} 

- (void) dealloc { 
    [model release]; 
    [super dealloc]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [[model cellData] count]; 
} 

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = nil; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    cell.textLabel.text = [[[model cellData] objectAtIndex: indexPath.section] objectAtIndex: indexPath.row]; 

    if(indexPath.row == [[model currentSelected] row] && indexPath.section == [[model currentSelected] section]){ 
     cell.selected = YES; 
    } else { 
     cell.selected = NO; 
    } 

    return cell; 
} 

@end 

// 
// RootViewController.m 
// TableviewScanMode 
// 
// Created by Nick Overdijk on 8/24/10. 
// Copyright Nick Overdijk 2010. All rights reserved. 
// 

#import "RootViewController.h" 
#import "Model.h" 
#import "TableViewAdapter.h" 


@implementation RootViewController 


#pragma mark - 
#pragma mark View lifecycle 

- (void)viewDidLoad { 
    model = [[Model alloc] init]; 
    [model addObserver:self 
      forKeyPath:@"updatedIndexPaths" 
       options:NSKeyValueObservingOptionNew 
       context:NULL 
    ]; 

    [model startSelectionRotation]; 

    adapter = [[TableViewAdapter alloc] initWithModel: model]; 
    self.tableView.dataSource = adapter; 

    [super viewDidLoad]; 
} 

- (void)dealloc { 
    [adapter release]; 
    [model release]; 
    [super dealloc]; 
} 

#pragma mark - 
#pragma mark KVO updates 
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    NSArray * reloadThese = [change objectForKey: NSKeyValueChangeNewKey]; 
    [self.tableView reloadRowsAtIndexPaths: reloadThese withRowAnimation: UITableViewRowAnimationFade]; 
} 

#pragma mark - 
#pragma mark Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
} 


@end 

如果你需要更多的代碼,呼喊。 :)

很多感謝, 尼克

+0

你有這個解決方案嗎?有同樣的問題... – meersmans 2010-11-10 14:21:28

回答

15

我有同樣的問題,並通過移動cell.selected = YEStableView:willDisplayCell:forRowAtIndexPath,而不是固定的。

我認爲它可能與UITableViewCell文檔底部的註釋有關,需要使用tableView:willDisplayCell:forRowAtIndexPath(大概selected設置背景顏色)對背景顏色的更改。

+0

當我有機會時,我會檢查這一點!非常感謝。 – Nick 2011-01-12 04:18:30

+0

謝謝!爲我節省了大量的時間來查看文檔。 – Joe 2011-06-13 21:30:52

相關問題