在iphone编程中使用标签——有人能解释一下吗?

在iphone编程中使用标签——有人能解释一下吗?,iphone,Iphone,我见过有人在iphone编程中使用标签,比如内部标签或tableview单元格: name.tag=kNameTag 有人能举例说明这些标签是如何使用的吗?我想这是为了以后可以引用ui元素?例如,如果您以编程方式使用for循环在iphone屏幕上创建UIButtons数组,您是否为for循环中的每个按钮分配标记或其他内容 谢谢 您在问题中包含的示例是常见的示例之一 您可以实例化循环中的按钮(或其他UI元素),为每个按钮分配一个增量标记。当iAction被其中一个按钮调用时,您可以向发送者索要它的

我见过有人在iphone编程中使用标签,比如内部标签或tableview单元格:

name.tag=kNameTag

有人能举例说明这些标签是如何使用的吗?我想这是为了以后可以引用ui元素?例如,如果您以编程方式使用for循环在iphone屏幕上创建UIButtons数组,您是否为for循环中的每个按钮分配标记或其他内容


谢谢

您在问题中包含的示例是常见的示例之一

您可以实例化循环中的按钮(或其他UI元素),为每个按钮分配一个增量标记。当iAction被其中一个按钮调用时,您可以向发送者索要它的标记,该标记准确地告诉您是哪个按钮触发了请求

for( int i = 0; i < 10; i++ ) {
    UIButton * button = [[UIButton alloc] init...];
    button.tag = i;
}

它们还广泛用于查找父视图中的特定子视图。UIView提供了一个
viewWithTag:(NSInteger)标记方法。当在不子类化的情况下构建自定义视图时(或者在您不想保存对子视图的引用但知道标记的情况下),这非常有用。

标记是整数。可以使用UIView.tag将它们指定给视图。然后使用
-[UIView viewWithTag::
在视图层次结构中搜索视图

UIKit不使用标签(我想),所以它们是免费的,您可以根据需要使用。然而,标签对你的应用程序来说是全局性的,所以它们不是IBOutlet的理想替代品(但当你有很多视图时,它通常更方便)

避免使用0作为标记,因为它是默认标记-
[v viewWithTag:0]
不太可能返回您要查找的视图

- (IBAction)doSomethingFromButtonTap:(id)sender {
    NSLog(@"Button pressed: %d", [sender tag]);
}