我想爲我的應用程序創建一個「設置」表格視圖。我試圖模仿它與Iphone上的葬禮設置相同的風格。我通過繼承自UITableCell創建了自己的自定義單元類。我給了它適當的IBOulets,並將它們連接到故事板。我也將開關連接到我的tableViewControler,但由於某種原因,我的代碼只返回一個空單元格(它只是一個單元格不是問題atm,因爲這是我的設置)。我三重檢查,並確保我在我的代碼和故事板中使用了相同的單元格標識符。任何人都知道我爲什麼要回空白細胞?IOS靜態表格與自定義單元格只繪製一個隨機單元格
這是我的自定義單元格的.h文件。
@interface NHPSettingsCell : UITableViewCell
@property (nonatomic,weak) IBOutlet UILabel *settingLabel;
@property (nonatomic,strong) IBOutlet UISwitch *settingSwitch;
@end
我的問題代碼是在這裏,我的自定義單元格的.h文件:
#import "NHPSettingsCell.h"
@implementation NHPSettingsCell
@synthesize settingLabel, settingSwitch;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
我在我的自定義視圖控制器繪製細胞方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SettingsCell";
NHPSettingsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[NHPSettingsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellStyleDefault;
}
cell.settingLabel.text = @"firstSetting";
//check the if user wants promt of disclaimer each time or not.
if([prefs boolForKey:@"firstSetting"] == YES){
cell.settingSwitch.on = YES;
}else{
cell.settingSwitch.on = NO;
}
return cell;
}
現在惹惱我的事情是我成功地設法實現了使用自定義單元格的動態表格的cellForRowAtIndexPath方法。我也使用默認單元實現了靜態表的代碼,但對於具有自定義單元的靜態表,它似乎不起作用。以下是我如何在動態表上實現自定義單元的代碼(請注意,我沒有初始化單元,但是它的工作原理)。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"InteractionResultCell";
NHPResultCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure & Fill the cell
cell.leftLabel.text = [[resultsList objectAtIndex:indexPath.row] substanceName];
cell.rightLabel.text = [[resultsList objectAtIndex:indexPath.row] substanceName2];
NSString *color = [NSString stringWithFormat:@"%@", [[resultsList objectAtIndex:indexPath.row] color]];
//Change a hex value to a readable 0x number to pass ot hte macro so we can go from a hex color to a RGB system.
NSScanner *scanner;
unsigned int tempint=0;
scanner = [NSScanner scannerWithString:color];
[scanner scanHexInt:&tempint];
cell.severityButton.backgroundColor = UIColorFromRGB(tempint);
return cell;
}
工作。謝謝。 – user597608 2012-03-27 06:22:38
你能提供一些關於如何使用initWithCOder的代碼嗎?與awakeFromNib相同。我很抱歉不得不問,但是這個代碼很快就會到期,我害怕破壞atm功能。 – user597608 2012-03-27 06:24:41
這只是一個標準的init方法,self = [super initWithCoder:aDecoder];如果(自己)等等awakeFromNib也是一種標準方法。我不知道我能給你什麼樣的樣品? – jrturton 2012-03-27 06:37:13