我正在使用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];進入viewWillAppear方法並把一個[dtdev removeDelegate:self];在viewWillDisappear方法。之後,條形碼掃描器在調用removeDelegate後將不再工作,即使通過addDelegate再次添加。
我沒有看到另一種方式,只是將兩個視圖控制器添加爲委託,然後在委託方法中像這樣放置代碼:「我是否可見」? - > continue:else break; (但是這很愚蠢,對嗎?)
這是一個錯誤還是我不直截了當?