Access包含来自Parent ViewController的UIView组件

时间:2015-09-14 20:51:37

标签: ios objective-c uiview uiviewcontroller

在我的父视图控制器中,我有一个视图容器,我添加了一个子视图:

    m_cardDetail  = [[CardDetailView alloc] init];
    [_m_viewContainer addSubview:m_cardDetail];
    [m_cardDetail initialize];

但是如何让我的父视图控制器处理按钮单击(按钮位于m_cardDetail子视图中)。我尝试将按钮的按钮标签属性设置为1010并在父视图控制器中使用此代码:

    UIButton *aButtonView = (UIButton *)[m_cardDetail viewWithTag:1010];
    [aButtonView addTarget:self action:@selector(aButtonTapped:) forControlEvent:UIControlEventTouchUpInside];

并在viewcontroller中添加了这个:

    - (void) aButtonTapped:(UIButton *) sender {
        //Do something
    }

但是我得到了无法识别的选择器错误

2 个答案:

答案 0 :(得分:1)

您可以执行自定义委托来执行此操作。 like in this article

答案 1 :(得分:1)

您应该将另一个视图控制器的视图视为私有视图,即使是一个子视图控制器也是如此。正如@Ostanik在他的回答(投票)中所建议的,建立协议和代表是在父母和孩子之间建立联系的好方法。

请注意,嵌入segue是一种设置父/子链接的非常简洁的方法。您只需在IB中创建一个容器视图,然后从容器视图中控制拖动到您想要成为子项的视图控制器的场景,Xcode将完成剩下的工作。加载父视图控制器时,将调用embed segue,您可以在prepareForSegue方法中设置委托。