我正在使用 Linea Pro 硬件条码扫描仪开展一个项目。开始时,我使用了以下答案How do I use the Linea-Pro SDK for IOS?
我的应用程序由一个导航控制器(包含两个条目的表)和两个连接的视图控制器(每个都使用扫描仪)组成。
我在导航控制器的 viewDidLoad 中连接设备,如下所示:
dtdev=[DTDevices sharedDevice];
[dtdev connect];
在两个视图控制器中,我在 viewDidLoad 方法中注册设备,如下所示:
dtdev=[DTDevices sharedDevice];
[dtdev addDelegate:self];
[super viewDidLoad];
不幸的是,当我单击设备扫描按钮时,两个视图控制器的两个委托方法都被调用,因为它们都注册了它。
为了防止这种行为,我想在视图可见时将 viewController 设置为委托,所以我把[dtdev addDelegate:self]; 进入viewWillAppear方法并放置一个[dtdev removeDelegate:self]; 在viewWillDisappear方法中。之后条码扫描器在调用 removeDelegate 后将不再工作,即使它是通过 addDelegate 再次添加的。
我没有看到另一种将两个视图控制器添加为委托然后在委托方法中放入这样的代码的方法:“我可见吗”?--> 继续:否则中断;(但这很愚蠢,对吧?)
这是一个错误还是我没有直接思考?