【问题标题】:uitabbarcontroller storyboard: connecting viewcontroller that's already connected to another uitabbarctrluitabbarcontroller 故事板:连接已经连接到另一个 uitabbarctrl 的视图控制器
【发布时间】:2012-01-27 01:59:25
【问题描述】:

我正在尝试在我的故事板中重复使用我的一些视图。 我从一个 uitabbarcontroller 开始,并为每个选项卡连接了一些视图。 现在我将一个新的 uitabbarcontroller 放入情节提要中,我想将其中一个选项卡连接到连接到原始选项卡栏的 SAME 视图控制器。

你能像那样在情节提要中“重用”视图控制器吗?还是您必须创建新的视图控制器? 我假设前者有效,因为我可以通过选择“推送”在情节提要的其他位置进行操作。 如果我选择“关系”,它就不能与 uitabbar 一起使用。

好的。我找到了我崩溃的原因,我想我知道发生了什么。看来,如果我连接另一个 uitabbarcontroller,那么第一个标签栏上的视图索引就会搞砸。我正在做什么以使用 uitabbar 获取对视图控制器的引用

UINavigationController* ar_nav=[self.viewControllers objectAtIndex:1];
_artvc = [ar_nav.viewControllers objectAtIndex:0];
if (![_artvc isKindOfClass:[ArtistTableViewController class]])
{
    TGLog(@"ERR wrong class! %@", [_artvc class]);
    exit(0);
}

当我连接第二个 uitabbar 时发现索引 1 不是那个类(即使故事板显示它是)。

在我原来的标签栏控制器上使用此代码

UINavigationController* n;
for (n in self.viewControllers)
{
    UIViewController* vc=[n.viewControllers objectAtIndex:0];
    TGLog(@"%@", [vc class]);
    if ([vc isKindOfClass:[ArtistTableViewController class]])
    {
        _artvc = (ArtistTableViewController*)vc;
    }
    if ([vc isKindOfClass:[SongsTableViewController class]])
    {
        _stvc = (SongsTableViewController*)vc;
    }
    if ([vc isKindOfClass:[AlbumTableViewController class]])
    {
        _altvc = (AlbumTableViewController*)vc;
    }

}

在我连接第二个 uitabbar 之前工作正常。一旦我这样做了,我的视图控制器就会从循环中消失。

【问题讨论】:

  • 我将用一个空白项目重新创建一个更好的问题。

标签: ios uitabbarcontroller storyboard


【解决方案1】:

这绝对是可能的。您确定正在建立的连接是针对视图的吗?

我很抱歉;这还不清楚。当您保持控制并拖动蓝色连接线时,请确保您连接到视图本身(而不是其他任何东西)。

您应该能够在 UITabBarController 和视图之间创建这种关系,即使它被另一个 UITabBarController 共享。

当您尝试时,它会向您显示什么选项?

【讨论】:

  • 感谢您的帮助。我正在拖到一个 uitableviewcontroller。它给了我 4 个选项:关系、推送、模型、自定义。我假设我选择关系是因为我希望该视图控制器成为我的选项卡的 VC。它立即崩溃 - 我认为这是在加载情节提要时。
  • 如果我在情节提要上放置了一个新的 VC 并使用它,它就可以正常工作。但不是已经使用过的。
  • 也许我应该澄清一些事情。我有 uitabbar->navcontroller->uitableview。这可能与那里的导航控制器有关吗? (我已经尝试连接到 navcontroller 和 tableview。
  • 您的情节提要图片的链接不起作用:(如果一切设置正确,我不确定为什么您无法通过循环访问它。我不相信您可以连接第一个导航控制器到第二个,我会坚持将第二个导航控制器连接到 UITableView。确保将 UITableView 设置为新导航控制器的根视图控制器。
【解决方案2】:

好的。它(可能)与我正在做 UITabbar->navcontroller->uitableview

的事实有关

当我添加我的第二个标签栏并创建它自己的导航控制器并连接它时。然后通过从 navcontroller 连接到 tableview 来“重用”原始 tableview。这似乎并没有破坏原来的标签栏。

这是我的故事板的截图 http://www.thumbgenius.dynalias.com/tabbar_vc_reuse.png

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 2013-01-28
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2015-02-11
    相关资源
    最近更新 更多