单击 UIView 时从 UIView 内部的标签获取文本
Posted
技术标签:
【中文标题】单击 UIView 时从 UIView 内部的标签获取文本【英文标题】:Getting the text from a label inside of a UIView when UIView is clicked 【发布时间】:2014-07-13 21:32:25 【问题描述】:我有一个名为 TabView 的自定义 UIView 类。每个 TabView 中都有 2 个标签以及一些其他元素。我使用界面生成器将这些标签添加到 TabView 中。在将 TabViews 作为子视图的视图控制器内部,我使用以下方法将触摸事件附加到每个 TabViews
- (void)viewDidLoad
[super viewDidLoad];
for (UIView *tabView in self.view.subviews)
if([tabView isKindOfClass:[DeviceTabView class]])
[self addGestureRecogniser:tabView];
-(void)addGestureRecogniser:(UIView *)touchView
UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self
action:@selector(segueToDeviceUpload:)];
[touchView addGestureRecognizer:singleTap];
我需要能够从单击的 UIView 中获取两个标签值,以便将其传递给以下视图控制器。我知道如何在 ViewControllers 之间传递值,只是不确定如何从选定的 TabView 中获取标签。感谢您的任何指导!
【问题讨论】:
【参考方案1】:您可以通过遍历视图的子视图来获取文本,类似于您在上面所做的:
- (void)segueToDeviceUpload:(UIGestureRecognizer *)gestureRecognizer
for (UIView *view in gestureRecognizer.view.subviews)
if([view isKindOfClass:[UILabel class]])
NSLog(@"One piece of text: %@",((UILabel *)view).text);
您可以使用标签来区分每个标签。
【讨论】:
【参考方案2】:您从 UIGestureRecognizer
中获取选定的 tabView,并通过gestureRecognizer.view 传递给 segueToDeviceUpload:。我建议为每个标签分配一些tag
,以便您可以通过 viewWithTag 从 tabView 获取它们:
一次性完成:
-(void)segueToDeviceUpload:(UITapGestureRecognizer*)sender
UIView *tappedView = sender.view;
UILabel *label1 = (UILabel*)[tappedView viewWithTag:1];
UILabel *label2 = (UILabel*)[tappedView viewWithTag:2];
【讨论】:
以上是关于单击 UIView 时从 UIView 内部的标签获取文本的主要内容,如果未能解决你的问题,请参考以下文章
如何在方向更改时调整多个标签的大小以自动适应 UIView 内部
UIView 在滚动时从 UICollectionView 的底部分离
在 Swift 中单击 NSObject 内部的 tableView 中的项目时,如何在 NSObject 类中的 UIViewController 上的 UIView 之间正确切换?