2016-07-21 3 views
0

im пытается создать демонстрационное приложение с использованием маяков оценки. Я хочу, чтобы приложение открывало конкретный диспетчер просмотра, когда пользователь находится рядом с маяком. im, используя performseguueithidentifier, но когда приложение запускается, открывается только первый контроллер представления, представляющий первый маяк, который находится в диапазоне, и он не открывает другие, когда я иду рядом с другими маяками. он как-то просто останавливается для других маяков. ниже код им с помощью ранжировать для маяков:performseguireithidentifier с iBeacons

func beaconManager(manager: AnyObject, didRangeBeacons beacons: [CLBeacon], 
         inRegion region: CLBeaconRegion) { 



     let knownBeacons = beacons.filter{ $0.proximity != CLProximity.Unknown} 

     if (knownBeacons.count > 0) { 

      let closestBeacon = knownBeacons [0] as CLBeacon 







      if(closestBeacon.minor.integerValue==50557){ 
       performSegueWithIdentifier("VC1", sender: nil) 
      } 

      else if(closestBeacon.minor.integerValue==37890){ 
       performSegueWithIdentifier("VC2", sender: nil) 

      } 

      else if(closestBeacon.minor.integerValue==18976){ 
       performSegueWithIdentifier("VC3", sender: nil) 
      } 





      else { 


       self.view.backgroundColor = UIColor.brownColor() 
      } 
+0

Является ли код, показанный в приложении appDelegate? Являются ли названные segues связанными только с единственным контроллером viewController? Вы уверены, что их нашли? Если бы установить точки останова или добавить инструкции NSLog, чтобы увидеть, какая ветвь оператора if выполняется. – davidgyoung

+0

@ davidgyoung no, код находится в главном контроллере view, и каждый segue связан с определенным контроллером представлений (ни один), и да, они находятся. зависит от того, какой маяк я запускаю приложение, он показывает только тот, и он не «запускает» другой сегмент, когда я иду рядом с другим маяком. однако, когда я закрываю приложение, и я иду рядом с другим маяком, он открывает его. но я хочу, чтобы segues автоматически отображали связанные контроллеры view, когда я приближаюсь к этому маяку (с данным незначительным значением) –

ответ

0

Я не использовал пользовательскую библиотеку Estimote, но я предполагаю, что это похоже на место менеджера.

В диспетчере определения местоположения, если ваше приложение находится в фоновом режиме, вы получаете уведомление о введенном регионе при первом входе в новую зону маяка, а затем получаете информацию о расстоянии всего несколько секунд.

Если вы создали свой регион с уникальным идентификатором UUID и основным идентификатором, но без младшего ID, тогда все маяки с этим UUID и идентификатором Major считаются частью одного и того же региона, и вы не будете надежно получать уведомления о ранжировании как маяки с различными младшими идентификаторами становятся ближайшим маяком.

Если вы хотите одновременно обрабатывать несколько маяков в радиусе действия и различать их, вам необходимо создать отдельные зоны маяка для каждого UUID маякового радиосигнала, майора ID и младшего удостоверения личности.

Я не знаю, если это проблема, с которой вы столкнулись, но это может быть так.

+0

нет, это не проблема. я просто хочу, чтобы segues показывал связанные контроллеры view, когда я приближаюсь к маяку с соответствующим младшим значением. но он показывает только первый в диапазоне, и он не меняется на другой, когда я иду рядом с другим маяком. он каким-то образом останавливается для других маяков. возможно, есть еще один способ написания кода выше. возможно, им не хватает smthng ...? –

Смежные вопросы