以编程方式设置在视图控制器上添加的对象的标记

Posted

技术标签:

【中文标题】以编程方式设置在视图控制器上添加的对象的标记【英文标题】:Setting Tag of Objects added on view controller programmatically 【发布时间】:2014-08-05 06:35:17 【问题描述】:

好的,这是一个完全不在意的问题。我有一个视图控制器,我在其上添加了UITapGestureRecognizer。当用户点击 View 时,自定义 UIView 会添加到该点击位置。这是UITapGestureRecogniser 的代码:

 -(IBAction)singleTap_Detected:(UITapGestureRecognizer *)recognizer
 
     CGPoint tapPoint = [recognizer locationInView:self.view];
     customView=[CustomPointUIView addCustomView];

     [customView.pointSelectionButton addTarget:self action:@selector(addInfoAction:) forControlEvents:UIControlEventTouchUpInside];

     [self.view addSubview:customView];
     customView.layer.position=CGPointMake(tapPoint.x,tapPoint.y);

     [customViewsArray addObject:[NSValue valueWithCGPoint:tapPoint]];

     NSManagedObjectContext *context = [self.circuit managedObjectContext];

     // if there isn't an Point object, create and configure one
     self.point = [NSEntityDescription insertNewObjectForEntityForName:@"PointDetail"
                                                                inManagedObjectContext:context];
     [self.circuit addPointObject:self.point];

     NSString *pointPosition=NSStringFromCGPoint(tapPoint);

     self.point.position=pointPosition;

     NSError *error = nil;
     if (![context save:&error])
     
         NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
         abort();
     

我还将点击位置保存在Core Data 中。现在的问题是我无法为视图控制器上添加的每个自定义UIView 设置标签。如图所示,每个自定义UIView 都有一个按钮。单击该Button,视图将导航到另一个视图。现在我需要为每个视图设置标签。这怎么可能 ?我不知道我是否能够清除我的概念但我会发自内心的感谢。所以,请给我一个解决方案。我是 iPhone 新手。

【问题讨论】:

不就是customView.tag = tagValue;吗? @Droppy 是的,但是 tagValue 应该是什么。我需要它随着每个新添加的 CustomView 而增加。 所以,你必须在你的类中添加 ivar NSInteger tagValue 并在 customView.tag = tagValue; tagValue++ 之后每次增加它 【参考方案1】:

您需要将下一个标签值存储为该类的实例变量:

@interface YourClass ()

    NSInteger _nextTagValue;

确保将其初始化为您在 viewDidLoad(或其他等价物)中的起始值:

- (void)viewDidLoad

    _nextTagValue = 100;
    ...

并像这样使用它:

-(IBAction)singleTap_Detected:(UITapGestureRecognizer *)recognizer

    CGPoint tapPoint = [recognizer locationInView:self.view];
    customView=[CustomPointUIView addCustomView];
    customView.tag = _nextTagValue++;

    ...

但是我不清楚这个标签值 意味着什么 以及你想如何使用它和跟踪它。如果您需要这方面的帮助,请添加详细信息。

【讨论】:

以上是关于以编程方式设置在视图控制器上添加的对象的标记的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式填充 UIStackView

如何以编程方式为情节提要中的子视图设置视图控制器?

如何以编程方式使用自动布局添加自定义视图

为啥我们不能在以编程方式设置初始视图控制器时以编程方式在视图控制器之间跳转?

在 Swift 中以编程方式将视图添加到 stackview

以编程方式设置为根视图控制器时,视图控制器无法正确显示子视图