Я пытаюсь правильно установить цель для события касания UIButton в подклассе UITableCell (разработан в IB), который удалит эту ячейку.Однако при запуске в симуляторе я получаю следующую ошибку:
* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [__NSPlaceholderArray initWithObjects: count»:]: попытка вставить объект nil из объектов [0] '
Это нормально подходит для метода, но всегда вылетает сразу после строки NSArray arrayWithObject.Кажется, причина этого в том, что кнопка, переданная методу target, всегда равна nil.
Я предполагаю, что это проблема с памятью, но я совершенно сбит с толку относительно того, как ее исправить.Мне просто нужно создать ячейку полностью программно, чтобы заставить это работать, или есть простой способ как-то указать цель действия кнопок в качестве основного ViewController из Interface Builder?
Здесь находятся ячейкисозданный в контроллере представления:
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView==songList){
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
SongCell *cell = (SongCell *)[tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
if(cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SongCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
[cell.addButton addTarget:self action:@selector(addToPlaylist:) forControlEvents:UIControlEventTouchUpInside];
}
NSUInteger row = [indexPath row];
cell.songname.text = @"test";//[songListData objectAtIndex:row];
return cell;
}
return nil;
}
И вот целевой метод:
-(void)addToPlaylist:(id)button{
SongCell *song = (SongCell *)[(UIButton *)button superview];
NSIndexPath *indexPath = [self.songList indexPathForCell:song];
NSArray *rowToMove = [NSArray arrayWithObject:indexPath];
[self.songList beginUpdates];
[self.songList deleteRowsAtIndexPaths:rowToMove withRowAnimation:UITableViewRowAnimationFade];
[self.songList endUpdates];
}
Любая помощь, которую вы можете предложить, будет принята с благодарностью.