2013-04-04 4 views
0

Я работаю над проектом с помощью сканера штрих-кода Linea Pro. Для начала я использовал следующий ответ How do I use the Linea-Pro SDK for IOS?Делегаты с несколькими представлениями относительно сканера штрих-кода Linea Pro

Мое приложение состоит из контроллера навигации (таблица с двумя записями) и двух подключенных контроллеров представлений (каждый из них использует сканер).

я подключаю устройство в viewDidLoad навигационного контроллера, как это:

dtdev=[DTDevices sharedDevice]; 
[dtdev connect]; 

В двух контроллерах зрения я регистрирующие устройства в методе viewDidLoad так:

dtdev=[DTDevices sharedDevice]; 
[dtdev addDelegate:self]; 
[super viewDidLoad]; 

К сожалению, когда я нажимаю кнопку сканирования устройства, вызываются оба метода делегирования двух контроллеров представлений, поскольку они зарегистрированы для него.

Чтобы предотвратить это поведение, я хотел установить viewController как делегат, как только вид будет виден, поэтому я поставлю [dtdev addDelegate: self]; в видWillAppear метод и положил [dtdev removeDelegate: self]; в видWillDisappear способ. После этого сканер штрих-кода больше не будет работать после вызова removeDelegate, даже если он добавлен через addDelegate снова.

Я не вижу другого способа просто добавить оба диспетчера представлений в качестве делегата, а затем использовать метод puttin в методах делегата: «Я виден»? -> continue: else break; (Но это глупо, правда?)

Является ли это ошибкой или я не думаю прямо?

ответ

0

Я удивлен, что делегат добавления/удаления не работает, звучит как ошибка. Если у вас есть пример с контроллером навигации, который делает только это, я бы предложил отправить его в LineaPro.

Вы уверены, что sharedDevice все еще установлен и что ваш dtdev не является нулевым, когда вы снова вызываете addDelegate?

Простое решение, вероятно, именно то, что вы думали. Добавьте это вверху обоих делегатов (поскольку вы используете навигационный контроллер).

if (self! = Self.navigationController.visibleViewController) возвращение;

0

Я имел такую ​​же проблему, и я решил проблему, добавив еще один :

[dtdev addDelegate:self];

в viewDidAppear метод.

Надеюсь, это поможет вам.