在我的父视图控制器中,我有一个视图容器,我添加了一个子视图:
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
}
但是我得到了无法识别的选择器错误
答案 0 :(得分:1)
您可以执行自定义委托来执行此操作。 like in this article
答案 1 :(得分:1)
您应该将另一个视图控制器的视图视为私有视图,即使是一个子视图控制器也是如此。正如@Ostanik在他的回答(投票)中所建议的,建立协议和代表是在父母和孩子之间建立联系的好方法。
请注意,嵌入segue是一种设置父/子链接的非常简洁的方法。您只需在IB中创建一个容器视图,然后从容器视图中控制拖动到您想要成为子项的视图控制器的场景,Xcode将完成剩下的工作。加载父视图控制器时,将调用embed segue,您可以在prepareForSegue方法中设置委托。