【问题标题】:Removing UITabBarController删除 UITabBarController
【发布时间】:2010-02-12 06:37:15
【问题描述】:

有人发布了与此类似的问题,但没有解决方案,但也没有示例代码。所以,我想我会在这里详细发布我的问题。

我的游戏有多种玩法,每一种都有多种选择。在尝试了各种设计之后,将它们放入具有三个选项卡的 UITabBarController 中似乎是最干净的,每个选项卡对应一个游戏类别。我创建了一个新的 UIVIewController,它从主菜单屏幕加载(替换主屏幕)并初始化 UITabBarController,如下所示:

barController = [[UITabBarController alloc] init];

Games1 *vc1 = [[[Games1 alloc] initWithNibName:@"Games1" bundle:nil] autorelease];
Games2 *vc2 = [[[Games2 alloc] initWithNibName:@"Games2" bundle:nil] autorelease];
Games3 *vc3 = [[[Games3 alloc] initWithNibName:@"Games3" bundle:nil] autorelease];

NSArray* controllers = [NSArray arrayWithObjects:vc3, vc1, vc2, nil];
barController.viewControllers = controllers;
[self.view addSubview:barController.view];

当用户选择游戏时,我从窗口中移除 UIViewController 并按如下方式释放:

- (void)dealloc {
    printf("Games released: barController: %d\n", [barController retainCount]);
    [barController.view removeFromSuperview];
    barController.viewControllers = 0;
    [barController release];
    barController = 0;
    [super dealloc];
}

我遇到的问题是,当我旋转设备时,我遇到了崩溃。如果我直接从主屏幕启动游戏模式并旋转,则不会崩溃。我已经验证所有东西都被释放了,并且我在 bar 控制器上的保留计数是 1。关于如何消除这种崩溃的任何建议?谢谢!

[编辑]更多信息:

barController定义为:

IBOutlet UITabBarController *barController;

与:

@property (nonatomic, retain) IBOutlet UITabBarController *barController;

【问题讨论】:

    标签: iphone uitabbarcontroller


    【解决方案1】:

    最终问题只是与 UITabBarController 外围相关。我直接在我的应用程序窗口中添加和删除 UIViewControllers,这已被证明会在其他地方引起问题。添加一个主 UIViewController / UIView 并且只添加和删除它可以修复所有问题,尽管自动发布而不是发布可能也有效。请参阅此处的讨论:

    View Controller being sent a message even though it has been deallocated

    UITabBarController 只是导致问题发生得更快更明显。

    【讨论】:

      【解决方案2】:

      不要这样做:

      barController.viewControllers = 0;
      

      在 -dealloc 中,您应该只从其父视图中删除 UITabBarController 的视图并释放它。

      【讨论】:

      • 感谢您的建议。我把那条线放进去试图解决问题;删除它没有任何区别。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2010-11-17
      • 2015-12-22
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多