天天看點

使用NSClassFromString來解耦

IOS開發極其讓人讨厭的一件事就import頭檔案,尤其是目前頁面有大量頁面可以跳轉時,及其麻煩,而且控制器之間的聯系也加深了,不利于後期的修改。

這時候就可以使用NSClassFromString來實作新頁面的生成。

UIViewController *newVC=[[NSClassFromString(@"UserViewController")alloc]init];
    [self.navigationController pushViewController:newVC animated:YES];
           

這樣就不需要導入目标控制器的.h檔案了,而且就算你把目标控制器删了,程式也不會報錯,隻會提示你

Application tried to push a nil view controller on target <BaseNavigationController: 0x15707b400>.

這一方式最大的妙用在于一個頁面若是有一個很多行的table,點選每一行都要跳轉新的頁面或者其他類似這樣需要跳轉大量頁面,且能找到一定順序關系的時候。隻需要跳轉的控制器的名字以string類型寫入一個數組中,如上面的_VCArr。 然後就可以友善實作跳轉了,否則如果一個個import頭檔案,再一行行生成,那就太麻煩了, 一旦你動了某一個控制器,程式就會崩潰。

UIViewController *newVC=[[NSClassFromString(_VCArr[indexpath.row])alloc]init];
    [self.navigationController pushViewController:newVC animated:YES];
           

繼續閱讀