【问题标题】:How to remove storyboard from existing iPhone project如何从现有的 iPhone 项目中删除情节提要
【发布时间】:2014-08-25 13:14:44
【问题描述】:

我是 iPhone 编程新手,现在遇到故事板问题。我想从应用程序中删除情节提要并以编程方式从appDelegate 调用视图控制器。我怎样才能做到这一点?

这是我在appDelegate 中的代码:

FirstViewController *firstView = [[FirstViewController alloc] init];
self.window.rootViewController = signInView;
return YES;

仍然显示黑屏。请帮我。谢谢。

【问题讨论】:

  • 为什么要删除情节提要?
  • 视图控制器的loadView可能有问题(如果有的话)。
  • 有很多建议可以从你的项目中删除一些真正有用的东西。 :( 故事板是 iOS 开发的未来。随着 iOS8 中的尺寸等级,如果你不跟上,你就会被淘汰。

标签: ios objective-c uinavigationcontroller storyboard


【解决方案1】:

从您的项目中删除 MainStoryBorad 文件。

从 info.plist 文件中删除 MainStroryBoard Key。

从项目设置中清除 MainInterface 选项。

使用名为“MyViewController”的 XIB 文件创建新的 UIViewController

在您的 AppDelegate.h 中为新控制器“MyViewController”添加@property

在您的 AppDelegate.m 中以这种方式更新 didFinishLaunchingWithOptions 方法。

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

     MyViewController *viewController = [[MyViewController alloc]     initWithNibName:@"MyViewController" bundle:nil];
     UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:viewController];
     self.window.rootViewController = nav;

     [self.window makeKeyAndVisible];

     return YES;
}

【讨论】:

    【解决方案2】:

    请找到以下链接并检查。 1. Info.plist 或 General Info -> 移除主界面 2.检查.xib连接->添加自定义类,查看.xib中的连接

    https://github.com/sunilhts/RemoveDefaultStoryBoard
    

    【讨论】:

      【解决方案3】:

      如果您的应用程序不是那么复杂,有大量 UI 视图控制器,我认为使用故事板比使用 xib 更好。 如果您想从项目中删除情节提要并使用 nib 与开发一起使用,请通过此链接执行以下步骤:

      http://www.wastedpotential.com/create-an-ios-app-without-storyboards-in-xcode-5/

      【讨论】:

        【解决方案4】:

        这是我正在做的步骤。

        1. 创建一个空项目,或者如果您已经创建了不担心,只需按照@trick 的建议从 plist 中删除 StoryBoard 条目。

        2. 从您的项目中删除 MainStoryBorad 文件

        3. 使用名为“MyViewController”的 XIB 文件创建新的 UIViewController

        4. 在您的 AppDelegate.h 中为新控制器“MyViewController”添加@property

        5. 在您的 AppDelegate.m 中以这种方式更新 didFinishLaunchingWithOptions 方法。


        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
        (NSDictionary *)launchOptions
        {
                    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
        
                     MyViewController *viewController = [[MyViewController alloc]     initWithNibName:@"MyViewController" bundle:nil];
                     UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:viewController];
                     self.window.rootViewController = nav;
        
                     [self.window makeKeyAndVisible];
        
                     return YES;
                }
        

        【讨论】:

          【解决方案5】:

          也许您必须在项目设置中删除主界面。

          【讨论】:

            【解决方案6】:

            您是否初始化了窗口并使其成为键?

            这是我的一个应用程序的实现:

            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
            self.window.rootViewController = [[DDHDemoViewController alloc] init];
            self.window.backgroundColor = [UIColor whiteColor];
            [self.window makeKeyAndVisible];
            return YES;
            

            【讨论】:

              【解决方案7】:

              删除主故事板文件的基本名称。它是 .plist。

              【讨论】:

                【解决方案8】:

                它显示黑屏的原因是因为您的 FirstViewController 类中没有配置任何内容。尝试在return YES' 之前设置firstView.view.backgroundColor = [UIColor greenColor];,您会看到FirstViewController 实际上正在加载;除了您在 FirstViewController 类的 init 方法中所做的之外,它没有任何配置。

                老实说,在故事板之外配置 ViewController 对初学者来说并不好玩。我不知道您为什么要这样做,但您的替代方案是使用 .nibs 或手动添加所有内容。我鼓励您不要删除情节提要,但如果必须,您的代码也可以。只需删除故事板文件,或者更好的是,在您决定重新使用它之前不要使用它,因为这是一个更好的主意。

                【讨论】:

                • 我鼓励大家删除故事板。因为这是了解一切如何运作的方法。我是这样开始的,我很高兴我做到了。
                猜你喜欢
                • 2023-01-26
                • 2012-12-05
                • 2017-01-18
                • 2012-03-30
                • 1970-01-01
                • 1970-01-01
                • 2015-01-26
                • 2013-12-09
                • 2016-07-10
                相关资源
                最近更新 更多