我正在使用适用于iBeacons的ESTimote SDK,他们可以在样本中调用自定义init方法。但是我正在使用故事板,故事板不会调用我的自定义init方法。所以客户支持建议我将自定义init方法移动到viewDidLoad中,但我似乎无法弄明白。使用自定义init方法时,当前区域为null。如果我硬编码UUID,主要和次要它很好。
-(id)initWithBeacon:(ESTBeacon *)beacon
{
self = [super init];
if (self)
{
self.beacon = beacon;
NSLog(@"Initiation got called");
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"B9407f30-f5f8-466e-aff9-25556b57fe6d"];
self.beacon = [[ESTBeacon alloc] init];
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
self.beacon = _beacon;
self.beaconRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:uuid
major:37470
minor:56023
identifier:@"RegionIdentifier"];
self.secondBeaconRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:self.beacon.proximityUUID
major:[self.beacon.major unsignedIntValue]
minor:[self.beacon.minor unsignedIntValue]
identifier:@"RangingRegion"];
if (self.beaconRegion) {
NSLog(@"youve got your region");
}
if (self.secondBeaconRegion) {
NSLog(@"the second beacon region");
}else{
NSLog(@"the second region doesnt get intialized ");
}
self.beaconRegion.notifyOnEntry = YES;
self.beaconRegion.notifyOnExit = YES;
[self.beaconManager startMonitoringForRegion:self.beaconRegion];
[self.beaconManager startRangingBeaconsInRegion:self.secondBeaconRegion];
[self.beaconManager requestAlwaysAuthorization];
}
答案 0 :(得分:0)
如果您使用的是Storyboard,则会调用另一个构造函数。 XIB和Storyboard使用initWithCoder:(NSCoder*)aDecoder
构造函数。
如果您想将信标传递给控制器,则需要在segue期间传递它们。请参阅Apple's docs。