访问包含来自父 ViewController 的 UIView 组件
Posted
技术标签:
【中文标题】访问包含来自父 ViewController 的 UIView 组件【英文标题】:Access contained UIView component from Parent ViewController 【发布时间】:2015-09-14 20:51:37 【问题描述】:在我的父视图控制器中,我有一个视图容器,我向它添加了一个子视图:
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];
并且还在视图控制器中添加了这个:
- (void) aButtonTapped:(UIButton *) sender
//Do something
但我得到了无法识别的选择器错误
【问题讨论】:
你可以做一个自定义委托来做到这一点。 like in this article 【参考方案1】:您应该将另一个视图控制器的视图视为私有视图,即使是子视图控制器也是如此。正如@Ostanik 在他的回答(已投票)中建议的那样,设置协议和委托是在父母和孩子之间建立联系的好方法。
请注意,嵌入转场是设置父/子链接的一种非常简洁的方式。您只需在 IB 中创建一个容器视图,然后从容器视图控制拖动到您希望成为子视图的视图控制器的场景,其余的由 Xcode 完成。加载父视图控制器时,将调用嵌入 segue,您可以在 prepareForSegue 方法中设置委托。
【讨论】:
以上是关于访问包含来自父 ViewController 的 UIView 组件的主要内容,如果未能解决你的问题,请参考以下文章
使用来自其他 viewController 的 Alamofire 从 JSON 中取出 HTML 标签