2015-10-29 2 views
0

Итак, я использую CoreAudioKit's CABTMIDICentralViewController, чтобы представить список MIDI-устройств Bluetooth для выбора пользователем. Тем не менее, я хочу, чтобы узнать, какое устройство пользователь выбрал, когда они сделаны, но, похоже, Apple не добавила никакого способа сделать это.Переопределение didSelectRowAtIndexPath на контроллере представлений с рамкой?

Так что я пытаюсь взломать его обнаружения, когда пользователь выбирает строку в таблице:

DPBleMidiDeviceManager.h:

#import <CoreAudioKit/CoreAudioKit.h> 

@interface DPBleMidiDeviceManager : CABTMIDICentralViewController 

@end 

DPBleMidiDeviceManager.m:

#import "DPBleMidiDeviceManager.h" 

@implementation DPBleMidiDeviceManager 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"midi device selected %@", indexPath); 

    //either of these next lines crash, it makes no difference: 
    //[[tableView delegate] tableView:tableView didDeselectRowAtIndexPath:indexPath]; 
    [super tableView:tableView didDeselectRowAtIndexPath:indexPath]; 
} 
@end 

Проблема в том, что она сбой на последней строке, говоря, что нет селектора. Что странно, потому что если я удалю супервызов, он не сбой, но он также неправильно подключается к устройству BLE, как если бы я не перекрывал этот вызов делегата.

Это что-то такое, что Apple делает так, что вы не можете получить доступ к своим столам? Почему они должны создавать представление пользовательского интерфейса, подобное этому, и позвольте вам назвать его, но не дать вам никакой информации о том, что было результатом? У меня отсутствует стандартный способ сделать это?

EDIT: вот подробности аварии с super вызова:

2015-10-29 15:14:37.039 [626:338267] midi device selected <NSIndexPath: 0x1473ae20> {length = 2, path = 0 - 3} 
2015-10-29 15:14:37.039 [626:338267] -[DPBleMidiDeviceManager tableView:didDeselectRowAtIndexPath:]: unrecognized selector sent to instance 0x147f34e0 
2015-10-29 15:14:37.040 [626:338267] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DPBleMidiDeviceManager tableView:didDeselectRowAtIndexPath:]: unrecognized selector sent to instance 0x147f34e0' 
*** First throw call stack: 
(0x2b3cdfef 0x3967dc8b 0x2b3d3409 0x2b3d11bf 0x2b300e78 0xaa165 0x2eb3956b 0x2ebe843b 0x2ea9da91 0x2ea1838f 0x2b393fed 0x2b3916ab 0x2b391ab3 0x2b2de201 0x2b2de013 0x32aab201 0x2ea82a59 0x88447 0x39c09aaf) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

ответ

1

Это не то, как вы называете супер. Это должно быть

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"midi device selected %@", indexPath); 

    [super tableView:tableView didDeselectRowAtIndexPath:indexPath]; 
} 
+0

Вы правы, и я пробовал в обоих направлениях. Они оба сбой. – phreakhead

+0

Что случилось, когда вы используете вышеперечисленное? –

+0

Добавлен журнал сбоев на вопрос. Благодаря! – phreakhead

 Смежные вопросы

  • Нет связанных вопросов^_^