Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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 在选择搜索栏中的项目之前初始化UIViewController_Iphone_Uiviewcontroller - Fatal编程技术网

Iphone 在选择搜索栏中的项目之前初始化UIViewController

Iphone 在选择搜索栏中的项目之前初始化UIViewController,iphone,uiviewcontroller,Iphone,Uiviewcontroller,我在主页上有一个UITabBarController和一个搜索栏。搜索栏搜索数据库中的项目,当选择某个项目时,跳转到选项卡2中的该项目。我将视图层次结构更改为在该选项卡中使用UINavigationController。在UINavigationController的rootViewController的ViewDiLoad中,我推送了第一个viewController(共3个)。搜索项目将转到此viewController上 如果我只转到该选项卡一次,则会加载第一个viewController

我在主页上有一个UITabBarController和一个搜索栏。搜索栏搜索数据库中的项目,当选择某个项目时,跳转到选项卡2中的该项目。我将视图层次结构更改为在该选项卡中使用UINavigationController。在UINavigationController的rootViewController的ViewDiLoad中,我推送了第一个viewController(共3个)。搜索项目将转到此viewController上


如果我只转到该选项卡一次,则会加载第一个viewController,并选择一个搜索项,然后它就会工作。问题是,如果我从未转到该选项卡,并且我的第一个viewController没有被推到堆栈上,那么搜索就不知道去哪里,并崩溃。我很确定我不会从第一个选项卡调用viewDidLoad来确保第一个ViewController被推到堆栈上。我该如何避开这个问题?在loadView中有什么我可以做的吗?谢谢。

没错,
viewDidLoad
是一个委托方法,不应该由您调用。您可以遵循的方法之一是-从选项卡1开始,在选项卡2中设置一个实例变量
firstViewController
,类似于
pendingItemIndex
,对应于要在选项卡2中显示的项目

然后,在
firstViewController
viewDidLoad
中,检查
pendingItemIndex
是否具有有效值(可以将默认值设置为-1)。如果是,则显示相应的项目