当前位置: 首页 > 知识库问答 >
问题:

情节提要:如何将单个视图链接到多个容器视图?

漆雕昊天
2023-03-14

我的目标是:

我使用故事板在我的应用程序中创建视图。

我的目标是有一个视图的单一实例,它将在应用程序的所有页面中公开和链接。在我的情况下,如果有一个应用程序有许多选项卡,我希望视图将出现在所有选项卡中,并具有相同的状态。

我的尝试和做法:

我创建了一个视图,并将其嵌入到不同选项卡中的容器视图中。

打开应用程序时,视图将在所有页面上显示并工作。但是,如果我在一个视图中进行更改,它不会传播到其他视图。

我看到在“Traits”下有一个“link”选项,但那没有帮助。

如何确保所有选项卡中只有一个即时视图?

干杯

共有1个答案

匡玉堂
2023-03-14

正如我在评论中所说的,你不能用segues做这件事,因为它们总是创建新的实例。因此,我认为您必须在代码中将子控制器添加到每个需要它的控制器。在情节提要中,可以向每个需要充当占位符的嵌入式控制器的控制器添加子视图。为带有开关的控制器指定一个自由形式大小,并将其大小设置为与添加到其他控制器的子视图相同的大小,然后取消选中“从NIB调整视图大小”框。下面是一个故事板示例,

在代码中,您需要在ViewDidDisplay中添加控制器,并在ViewDidEnglishe中删除它(这样它就可以添加到下一个控制器——它不能同时位于两个位置)。在控制器中,您将使用开关创建控制器的实例,在所有其他控制器中,您将获得对该实例的引用。因此,在第一个控制器中,

- (void)viewDidLoad {
    [super viewDidLoad];
    self.embed = [self.storyboard instantiateViewControllerWithIdentifier:@"SharedVC"];
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self addChildViewController:self.embed];
    [self.container addSubview:self.embed.view];
}

-(void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    [self.embed.view removeFromSuperview];
    [self.embed willMoveToParentViewController:nil];
    [self.embed removeFromParentViewController];
}

在所有其他控制器中,在ViewDidDisplay中需要类似的内容(ViewDidEnglish与在第一个控制器中相同),

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    self.embed = [(FirstViewController *)self.tabBarController.viewControllers[0] embed];
    [self addChildViewController:self.embed];
    [self.container addSubview:self.embed.view];
}
 类似资料:
  • 我有一个带有背景图像和标题标题的viewcontroller。这种观点在大多数情况下都是一样的。我将在这个viewcontroller中显示和隐藏不同的子视图。 如何使用故事板实现这一点? 我是否必须为每个子视图创建单独的XIB 还是有其他优雅的解决方案? 谢谢

  • 我有一个UIViewController上有两个UIViews。在导航栏中,当按下一个按钮时,将显示一个UIView,当按下另一个按钮时,将显示另一个UIView。我想把一个UITableView上的一个视图。但是,UITableView要求UIViewController使用UITableView委托和UITableViewDataSource。在为包含UTTableView的UIView(子视

  • 自动布局让我的生活变得困难。理论上,当我换衣服的时候,它会非常有用,但是我似乎一直在努力。 我做了一个演示项目,试图找到帮助。是否有人知道在调整视图大小时如何使视图之间的间距均匀增加或减少? 以下是三个标签(手动垂直均匀排列): 我想让它们在旋转时均匀地调整间距(而不是视图大小)。默认情况下,顶视图和底视图向中心挤压:

  • 我有一个复杂的iPad视图,我通过几个视图控制器来管理它。我以前(在iOS6/xcode4.5之前)是通过在代码中分配视图控制器来实现这一点的,并通过主视图的链接将各种视图连接到它们。 我想做的是使用新的UIContainerView容器视图将视图控制器嵌入到情节提要文件中。我似乎无法将嵌入式视图控制器的IBOutlet链接到主控制器。 有可能这样做吗?或者通过标签或代码中的某些东西检索嵌入式控制

  • 我使用的是Xcode 4.5和iOS 6。 我正在构建一个使用故事板的通用应用程序。我有一个视图控制器,它在导航栏中有一个按钮。当点击按钮时,我正在使用一个segue来显示另一个视图控制器作为模式。模态视图控制器在其导航栏中有一个“取消”和一个“保存”按钮。在情节提要中,模式按钮项链接到新退出操作上的操作,该操作应展开到父视图控制器,取消模式,并调用操作处理程序。 这在iPhone上运行良好,但我

  • 问题内容: 一个单例控制器是否可能具有多个视图 [https://github.com/angular-ui/ui- router/issues/494] ? 用例:我有一个ui-view = header和ui-view = content。我根据当前状态更改标题以显示上下文相关的按钮(即返回,保存,过滤等)。我希望这些按钮在内容控制器中调用一个函数,但是如果执行以下操作,它将创建两个MyCon