suchen

Heim  >  Fragen und Antworten  >  Hauptteil

纯objective-c写的iOS App,增加新功能时可以用xib或者StoryBoard吗

我负责接手开发一个iOS App,之前这个产品已经在App Store架上了,没有用到xib, storyboard,所以的界面都是在objective-c代码画的(CGRectMake)。

现在我要给这个产品增加新的模块,新模块如果用xib或者StoryBoard,能和老的代码兼容吗,我问了团队内的两个同事,一个说可以,一个说不可以。

到底是可以不可以呢?

问题补充,老的代码里,所有界面都共用一个导航头,不同界面之间的跳转是这样写的:

[self.navigationController pushViewController:webv animated:YES];

在loadView方法中这样修改导航条上的文字:

self.title = @"关于我们";

我隐约记得那位说不可以的同事,就是说新的模块用xib/storyboard实现,pushViewController就不兼容了。只是隐约记得,不确信,如果有错,多半是我太菜听错,应该不是那同事的错-_-

大家讲道理大家讲道理2772 Tage vor1437

Antworte allen(11)Ich werde antworten

  • 伊谢尔伦

    伊谢尔伦2017-04-17 11:22:32

    当然可以,每个UIViewController都是独立的,你新加一个ViewController在xib上面实现界面不会影响到别的地方。如果是改以前的Controller,在调用的时候换一个构造方法就可以了,其实xib就是替换了loadView这个方法里干的事

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:22:32

    可以兼容
    比如一个uiviewcontroller,你开始没加xib,后来加个xib,把关联的class改为vc的class就行。还有就是不能重写loadview方法,把初始化view的内容放到别处。
    比如是一个uiview,定义一个view的xib,修改class为你关联的class,然后直接使用。

    Antwort
    0
  • 阿神

    阿神2017-04-17 11:22:32

    绝对都可以,现在接手的项目是手写代码,nib,SB三种混用的,该支持的方法都支持。

    Antwort
    0
  • PHPz

    PHPz2017-04-17 11:22:32

    可以。比如,我在老工程里新增了一个用户模块,这个模块用 StoryBoard 管理页面流,这些 VC 以 UINavigationController 为容器(这个可自己定制),那从当前代码中跳转到用户模块的代码如下:

    - (void)goToUserModule {
        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"User_iPhone" bundle:nil];
        UINavigationController *navigationVC = [sb instantiateInitialViewController];
        navigationVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        [self presentViewController:navigationVC animated:YES completion:nil];
    }

    只要模块设计得清晰,我觉得基本上可以无缝衔接。

    Antwort
    0
  • 阿神

    阿神2017-04-17 11:22:32

    xib明显可以,StoryBoard没用过脑补不可以。另外用StoryBoard deployment target要5.0

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-17 11:22:32

    可以。

    其实xib只是帮你(漂亮的)干了-(void)loadView中的活而已。类似self.title = @"关于我们";这种属性设置,放到-(void)viewDidLoad方法中即可。

    Antwort
    0
  • 迷茫

    迷茫2017-04-17 11:22:32

    xib肯定可以

    但是为什么要这么做?xib出现版本冲突手动merge要死人的

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-17 11:22:32

    楼主,你自己试一试不就知道了么?

    Antwort
    0
  • PHPz

    PHPz2017-04-17 11:22:32

    当然可以,storyborad会比较清晰,但是ipa 的大小会大点

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-17 11:22:32

    这有一个特别实用的技术,Xib模块化开发http://00red.com/blog/2016/07...

    Antwort
    0
  • StornierenAntwort