【问题标题】:IPhone App with multiple controllers具有多个控制器的 iPhone 应用程序
【发布时间】:2012-05-08 02:39:41
【问题描述】:

我正在开发一个带有登录屏幕(UIViewController)的应用程序(使用 Storyboard),它将经过身份验证的用户带到 Tab 应用程序(UITabbarController)。 Tab Bar Item 之一基于我为其添加了 UINavigationController 的 Table View Controller。为了开发表格屏幕,我正在关注 iOS 5 第 2 部分(Bird Sighting Example)。我已经成功创建了除此表格部分之外的整个应用程序。我在 AppDelegate 中感到困惑,因为我的根视图控制器在 BirdSighting 示例中登录屏幕并且在大多数示例中,应用程序从 Navigation View Controller 或 Tabbar Controller 开始。我正在粘贴我的 AppDelegate 方法。

这是我遇到的运行时错误 “由于未捕获的异常‘NSInvalidArgumentException’而终止应用程序,原因:‘不支持推送导航控制器’”

这是我的应用流程 登录屏幕-> 标签应用 表 1。显示详细资料 表 2。查看工单(TicketMasterViewController) ->工单详情(TicketDetailViewController)。

我是否需要初始化 AppDelegate 中的所有控制器以及 TicketMasterViewController 的 objectAtIndex 应该是什么。 感谢您的宝贵时间。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    NavigationViewController *vc4=[[NavigationViewController alloc]init];


    UINavigationController *navigationController=[[UINavigationController alloc]initWithRootViewController:vc4];
    TicketMasterViewController *firstViewController=(TicketMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];
    TicketDataController *aDataController=[[TicketDataController alloc] init];
    firstViewController.dataController=aDataController;  

    // Override point for customization after application launch.
    return YES;
}

【问题讨论】:

  • 所以你必须在视图控制器上添加标签栏?
  • 在您的流程中,两个选项卡有显示详细信息和查看工单,工单详细信息是什么?从哪里出来的?

标签: iphone objective-c


【解决方案1】:

您可以尝试删除上述代码,应用程序可能会运行。如果您使用情节提要并假设您已如上所述设置此视图控制器层次结构,则不需要此代码。在这里添加代码的唯一原因是将数据(MVC 中的模型)附加到视图控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-31
    • 2017-10-17
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多