Я пытаюсь создать UIBarButtonItem в правом углу моего tableView, чтобы выделять и отменять выделение ячейки при нажатии.
Другими словами, когда пользователи нажимают кнопку, диапазонячеек изменит цвет фона с белого на желтый.
Я не могу этого сделать, потому что каждый раз, когда я нажимаю эту кнопку, приложение вылетает.
Вот код, который я использую для создания кнопки:
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *barButton;
barButton = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"high.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(colorCells:)] autorelease];
self.navigationItem.rightBarButtonItem = barButton;
}
А здесь, чтобы выделить его, диапазон ячеек:
- (void) colorCells:(id)sender
{
UITableViewCell *cell;
NSString *cellValue = cell.textLabel.text;
if ([cellValue isEqual: @"textTheCellShouldBeEqualTo"]){
cell.backgroundColor = [UIColor colorWithRed:251/255.0f green:255/255.0f blue:192/255.0f alpha:1]; ;
cell.imageView.image = [UIImage imageNamed:@"hot.png"];
}
else {
cell.imageView.image = nil;
cell.backgroundColor = [UIColor whiteColor];
}
}
Где янеудачу?Это должно работать нормально.Или же?Я что-то пропустил?Представление является UITableViewController.
РЕДАКТИРОВАТЬ
Я изменил свой код следующим образом:
- (void) colorCells:(id)sender{
UITableViewCell *cell;
NSInteger nSections = [self.tableView numberOfSections];
for (int j=0; j<nSections; j++) {
NSInteger nRows = [self.tableView numberOfRowsInSection:j];
for (int i=0; i<nRows; i++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:j];
cell = [self.tableView cellForRowAtIndexPath:indexPath];
}
NSString *cellValue = cell.textLabel.text;
if ([cellValue isEqual: @"textTheCellShouldBeEqualTo"] ){
cell.backgroundColor = [UIColor colorWithRed:251/255.0f green:255/255.0f blue:192/255.0f alpha:1]; ;
cell.imageView.image = [UIImage imageNamed:@"hot.png"];
}
else {
cell.imageView.image = nil;
cell.backgroundColor = [UIColor whiteColor];
}
[self.tableView reloadData];
}
}
Теперь он не падает, но этоне окрашивает фон тоже.Есть идеи?