0

如果我按下第二个 UITabbarItem,我正在尝试打开一个 UIViewController。

这是我的第一个 ViewController 的代码。如果我按 UITabbarItem #1(标签 1),它会设置 Label.text。在 #2 我想切换到 secondViewController 并且(标签 2)它崩溃了。有谁知道为什么?第一个断点位于 UIStoryboard...(故事板称为:Main.storyboard)。感谢帮助

#import "ViewController.h"
#import "secondViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.tabBar.delegate = self;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
    switch (item.tag) {
        case 1:        self.testlabel.text =@"test";
            break;
        case 2:
        {  // create the Storyboard object
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        secondViewController *second = [storyboard instantiateViewControllerWithIdentifier:@"secondview"];
        [self.navigationController pushViewController:second animated:YES];
        }         
        break;
        default:         break; }
}
@end

错误

4

1 回答 1

1

有几件事。

  1. 如果还没有为UITabBarController

  2. 除非您想远离UITabBarController您不推送视图控制器,否则您必须手动将视图控制器设置为 tabBar 项,或者在 tabBarController 中重新设置视图控制器数组。

    NSMutableArray* newControllers = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];

    [newControllers addObject:second];

    [self.tabBarController setViewControllers:newControllers Animation:NO];

  3. UITabBarController在故事板里吗?在您想要的选项卡上按住右键单击按钮并将其拖到控制器上,然后将该控制器设置为选项卡的位置,如果这样做,您可以忽略上面的 1 和 2

  4. UITabBarController并不是要为每个选项卡执行不同的功能,因此让第一个选项卡设置标签而第二个选项卡显示一个 是一种不好的编码习惯UIViewController,但这无关紧要。

在所有这些UITabBarController东西之后,应用程序可能会崩溃,因为您UINavigationController是 nil,或者您收到“SecondView 不是值编码兼容错误”或类似的东西,这意味着在情节提要中将属性设置为不再存在的项目. 因此,在情节提要中右键单击视图控制器并查看是否看到任何黄色警告标记,如果有,请点击它们旁边的“X”。

于 2013-09-29T21:34:17.930 回答