在iphone编程中使用标签 - 有人可以解释一下吗?

时间:2010-08-18 00:06:58

标签: iphone

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

name.tag = kNameTag

有人可以用一个例子来解释如何使用这些标签吗?我知道你以后可以参考一个ui元素吗?就像你以编程方式使用for循环在iphone屏幕上创建一个UIButtons数组一样,你是否为for循环中的每个按钮分配了标签?

谢谢!

2 个答案:

答案 0 :(得分:3)

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

您可以在循环中实例化按钮(或其他UI元素),为每个按钮分配增量标记。当其中一个按钮调用IBAction时,您可以向发件人询问它的标签,该标签会准确告诉您哪个按钮触发了请求。

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

IBAction为:

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

它们还广泛用于在父视图中查找特定子视图。 UIView提供了viewWithTag:(NSInteger)tag方法。这在构建没有子类化的自定义视图时很有用(或者您不希望保留对子视图的引用但知道标记的情况)。

答案 1 :(得分:2)

标签是整数。您可以使用UIView.tag将它们分配给视图。然后使用-[UIView viewWithTag:]搜索视图的视图层次结构。

UIKit不使用标签(我认为),所以它们可以根据需要免费使用。但是,标签对于您的应用程序来说是全局的,因此它们不是IBOutlet的理想替代品(但是当您有大量视图时,它通常会更方便)。

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