Я пытаюсь создать табличное представление «Настройки» для своего приложения.Я пытаюсь имитировать его в том же стиле, что и общие настройки на Iphone.Я создал свой собственный класс ячеек, наследуя от UITableCell.Я дал ему соответствующие IBOulets, и я подключил их в раскадровке.Я также подключил коммутатор к своему tableViewControler, но по какой-то причине мой код возвращает мне только одну пустую ячейку (то, что только одна ячейка не является проблемой, поскольку это все, что у меня есть в моих настройках).Я трижды проверил и убедился, что я использую один и тот же идентификатор ячейки в своем коде и в раскадровке.Кто-нибудь знает, почему я получаю пустую ячейку обратно?
Вот мой файл .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;
}