Итак, я использую 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
Вы правы, и я пробовал в обоих направлениях. Они оба сбой. – phreakhead
Что случилось, когда вы используете вышеперечисленное? –
Добавлен журнал сбоев на вопрос. Благодаря! – phreakhead