Я работаю над проектом с помощью сканера штрих-кода 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; (Но это глупо, правда?)
Является ли это ошибкой или я не думаю прямо?