我正在构建一个基本的单视图iBeacon应用程序,其中包含一个显示信标及其属性的表格。当它只是一个视图应用程序时,一切正常。
但是当我在导航控制器中嵌入这个单一视图时,我收到以下错误:
2014-10-15 16:47:09.633 beacon-iphone[14524:4714482] -[UINavigationController setBeacons:]: unrecognized selector sent to instance 0x14d890f0
2014-10-15 16:47:09.634 beacon-iphone[14524:4714482] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setBeacons:]: unrecognized selector sent to instance 0x14d890f0'
我认为这是由于AppDelegate.m
中的这些代码行所致,因为原始表格视图在嵌入导航控制器时不再是rootViewController
。
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
ViewController *viewController = (ViewController*)self.window.rootViewController;
viewController.beacons = beacons;
[viewController.tableView reloadData];
// Do stuff if beacons are found
}
我如何重构这个来计算导航控制器?如果这是一个微不足道的问题,我很抱歉,因为我仍然是iOS菜鸟
下面是我的故事板和工作代码。如上所述,它只会在我将其嵌入导航控制器
时中断
答案 0 :(得分:0)
根视图控制器现在是导航控制器,因此您需要访问其topViewController属性以获取ViewController,
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
ViewController *viewController = (ViewController *)nav.topViewController;
viewController.beacons = beacons;
[viewController.tableView reloadData];
// Do stuff if beacons are found
}