0

ルート ビュー コントローラーと 2 つのテーブルビュー コントローラーを持つナビゲーション コントローラーがあります。最初の tableview コントローラーをスタックにプッシュすると、cbcentralmanager が BLE 周辺機器をスキャンし、すべてがうまく機能します。ただし、2 番目の tableview コントローラーをスタックにプッシュしてからポップオフすると (最初の tableview コントローラーに戻る)、cbcentralmanager はスキャンしますが、デバイスは検出されません。最初のテーブルビュー コントローラーのコードを次に示します。tableviewコントローラーが表示されるたびに、viewWillAppearメソッドが期待どおりに呼び出されていますが、スキャンでは何も明らかになりません。

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[AppDelegate app].cbCentral.delegate = self;
[AppDelegate app].peripheral.delegate = self;
[AppDelegate app].brspObject.delegate = self;

peripherals = [NSMutableArray new];
[self startScan];
}

- (void)startScan
{    
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[peripherals removeAllObjects];
[self.tableView reloadData];

[[AppDelegate app].cbCentral scanForPeripheralsWithServices:[NSArray arrayWithObject:[Brsp brspServiceUUID]] options:nil];

[self performSelector:@selector(stopScan) withObject:nil afterDelay:5.0];
}

過去に適切なデリゲートを設定することで困惑しましたが、ここですべてのベースをカバーしたと思います。何かご意見は?

4

1 に答える 1

0

なぜこれが機能したのかはわかりませんが、次のコード行を移動しました。

[AppDelegate app].cbCentral.delegate = self;
[AppDelegate app].peripheral.delegate = self;
[AppDelegate app].brspObject.delegate = self;

-(void)startScan メソッドに追加され、今では機能します。

于 2013-10-14T22:40:22.760 に答える