【问题标题】:Getting the text from a label inside of a UIView when UIView is clicked单击 UIView 时从 UIView 内部的标签获取文本
【发布时间】: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 中获取标签。感谢您的任何指导!

【问题讨论】:

    标签: ios objective-c uiview uitapgesturerecognizer


    【解决方案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];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多