【问题标题】:How to make embedded segue respond to user action如何使嵌入式 segue 响应用户操作
【发布时间】:2014-07-25 21:00:31
【问题描述】:

我的 PenViewController 有三个标签和一个容器视图,这意味着我使用的是嵌入式 segue。至少根据我的理解,关于嵌入式 segue 的事情是,它们不像 push segue 那样是由用户操作引起的。但是现在我需要我的容器视图在单击不同的标签时分别显示不同的子项。如何将该数据传递给容器视图?这是我的嵌入序列。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"embedded_segue_to_container_vc"]) {
        if ([segue.destinationViewController isKindOfClass:[BCDPenDetailContainerViewController class]]) {
            BCDPenDetailContainerViewController *container = (BCDPenDetailContainerViewController *)segue.destinationViewController;
            container.details=self.details;
        }
    }
}

【问题讨论】:

  • 你不能使用sender 知道哪个标签被点击了吗?
  • 可以使用UITabBarController作为嵌入式控制器,隐藏标签栏,根据点击的标签设置标签控制器的selectedIndex
  • @spassas 我不明白这个评论。 PenViewController 三个标签和标签下方的一个ContainerView。标签也不在导航控制器中:它们在 PenViewController 的正确主体中。这就是外观,它是一成不变的。我的 tabBar 和我的 navBar 已经很忙了。所以真的,不知何故,我需要嵌入 segue 来响应标签的点击。
  • “响应”我想你的意思是你想根据被点击的标签来改变嵌入式控制器。是这样吗,还是我误解了你的问题?
  • @reecon 发件人是什么?这是一个嵌入segue。即使我尝试从标签转移到容器,情节提要也不会为我提供转移选项。那么有没有一种不同的方法可以以某种方式告诉prepareForSegue:sender: 方法其中一个标签是发件人?我的意思是,严格来说,Container View 是情节提要所关心的发送者,并且它不允许对容器随附的 ViewController 进行其他额外的 segue。

标签: ios objective-c uiviewcontroller segue uicontainerview


【解决方案1】:

容器视图只是一个 UIView(带有一些 IB 魔法),因此如果您需要引用它来更改(或添加)子视图控制器,您可以为其创建一个 IBOutlet。要添加另一个子视图控制器,请使用标准的自定义容器控制器 api,并将新控制器的视图添加到容器视图中,

-(IBAction)addNew:(id)sender {
    UIViewController *newVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NewVC"];
    [self addChildViewController:newVC];
    [newVC didMoveToParentViewController:self];
    newVC.view.frame = self.containerView.bounds; // containerView is the IBOutlet to the container view in the storyboard
    [self.containerView addSubview:newVC.view];
}

【讨论】:

    猜你喜欢
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2020-08-05
    • 2018-09-20
    • 2012-07-03
    • 2013-07-23
    相关资源
    最近更新 更多