iBeacons的viewDidLoad中的自定义初始化

时间:2014-10-02 13:26:23

标签: ios objective-c xcode ibeacon viewdidload

我正在使用适用于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];
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是Storyboard,则会调用另一个构造函数。 XIB和Storyboard使用initWithCoder:(NSCoder*)aDecoder构造函数。

如果您想将信标传递给控制器​​,则需要在segue期间传递它们。请参阅Apple's docs