单击 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 之间正确切换?

约束 UIView 内的标签,该标签位于可扩展 collectionViewCell 内

在屏幕向下移动时从左到右移动 UIView

在 UIView 中隐藏非子 UIView