Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何以编程方式更改初始选项卡栏选择_Iphone_Objective C_Ios_Uitabbarcontroller - Fatal编程技术网

Iphone 如何以编程方式更改初始选项卡栏选择

Iphone 如何以编程方式更改初始选项卡栏选择,iphone,objective-c,ios,uitabbarcontroller,Iphone,Objective C,Ios,Uitabbarcontroller,更改应用程序上的初始选项卡栏选择时出现问题(即,在应用程序启动时选择中间选项卡,而不是最左边的选项卡)。该应用程序使用故事板,选项卡栏控制器后来在开发过程中通过故事板方法添加 tabBarController.selectedIndex = 1; 上面的代码不起作用(因为我没有将自定义视图控制器连接到选项卡栏,只有默认的UITabBarController): 做了一些谷歌搜索,查看了许多不同的资源,还没有找到一个应用程序的解决方案,该应用程序最初不是使用Apple的模板选项卡栏应用程序创建的

更改应用程序上的初始选项卡栏选择时出现问题(即,在应用程序启动时选择中间选项卡,而不是最左边的选项卡)。该应用程序使用故事板,选项卡栏控制器后来在开发过程中通过故事板方法添加

tabBarController.selectedIndex = 1;
上面的代码不起作用(因为我没有将自定义视图控制器连接到选项卡栏,只有默认的UITabBarController):


做了一些谷歌搜索,查看了许多不同的资源,还没有找到一个应用程序的解决方案,该应用程序最初不是使用Apple的模板选项卡栏应用程序创建的。

选项卡栏设置选择项:
尝试在您的
视图中使用该选项,因为这是初始视图控制器,而不是子类,您需要在appDelegate中设置此选项

在AppDelegate.m中,将以下内容添加到
应用程序中:didFinishLaunchingWithOptions:
方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Select the left-most tab of our initial tab bar controller:
    UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
    tabBar.selectedIndex = 0;
    return YES;
}

这不起作用,因为我的选项卡栏没有特定的视图控制器(使用viewDidLoad方法)。我没有为我的标签栏创建出口。这只是在故事板中创建的默认值。我添加了一个视图控制器.h和.m,并将其与我的TabBarController连接。我创建了一个UITabBarController出口,并使用了选定的索引。然后尝试了你所说的(创建一个UITabBar插座并使用setSelectedItem),但仍然一无所获:/这是项目的初始视图控制器还是从另一个视图控制器推送的?选项卡栏控制器是初始视图控制器。你太棒了。工作得很好。有道理,我必须在AppDelegate中这样做,因为它是初始视图控制器。谢谢。为了便于将来参考,如果您需要执行类似操作,并且它不是初始视图控制器,您将在加载之前的视图中跳过
prepareForSegue
,并从那里进行设置。