0

目前我正在使用 Xamarin.iOS 编写一个 iOS 应用程序,并且我编写了一个名为 BaseTabbarController 的自定义 UITabbarController。在这个 ViewController 中,我在 TabBar 上制作了一个居中凸起的 UIButton,以实现如下效果: 凸起中心按钮

所以这意味着在我的 BaseTabbarController 中有一个我的按钮的 onClick 委托。当按下按钮时,我想对新的 ViewController 执行序列(push)。以下代码给了我错误:“找不到用于 segue 'searchSegue' 的导航控制器。只有在源控制器由 UINavigationController 的实例管理时才能使用推送 segues”。

那我现在该怎么办?我不知道如何解决这个问题..

我的故事板看起来像这样,我正在谈论第二行。 在此处输入图像描述

4

2 回答 2

2

如果导致 push segue 的按钮位于 tabbar 上,那么您不能对其执行 push segue,因为 tabbar 控制器应该是 rootview 控制器,并且要具有 push segue,您的控制器必须将导航控制器作为容器。

例如,MyViewController 是视图 A 的控制器,OneMoreViewController 是视图 B 的控制器,现在您想从视图 A 调用视图 B,然后将视图 A 嵌入导航控制器中

// 以编程方式

MyViewController *vc= [MyViewController alloc] init];

UINavigationController *nav = [UINavigationController alloc] initWithRootViewController: vc];

如果要在选项卡栏中添加该视图 A,请​​在选项卡栏中添加导航对象。

现在您可以使用 Push segue 从视图 A 调用 viewB。

// 如果您使用情节提要,那么

选择要嵌入到 navigationcontroller 中的视图,然后从菜单栏中选择 Editor\Embed In\Navigation Controller。而已。

于 2013-05-16T17:57:21.640 回答
0

你有一个从你的标签栏控制器连接到第二行的导航控制器的 push segue——这是不对的。那应该是一个关系segue(即选项卡栏控制器的视图控制器之一,第二个选项卡)。

编辑后:

为了能够从屏幕上的任何其他控制器推送该控制器,每个选项卡中的所有基本控制器都必须是导航控制器。只要这是真的,你应该能够做到这一点。基本过程是找出哪个导航控制器的堆栈在屏幕上(使用选项卡栏控制器的 selectedViewController 方法),并使用 pushViewController:animated: 从该导航控制器执行推送代码。在情节提要中,您希望将要推送的控制器与所有内容断开连接(没有转场),并具有标识符,因此您可以从情节提要中获取它来进行推送。

于 2013-05-16T16:30:06.097 回答