我見過的人使用標記的iPhone編程,像內標籤或實現代碼如下細胞:在iphone編程中使用標籤 - 有人可以解釋嗎?
name.tag = kNameTag
有人可以用一個例子解釋這些標籤是如何使用?我認爲這樣可以在以後引用ui元素?就像如果你以編程方式使用for循環在iphone屏幕上創建一個UIButton數組,你可以爲for循環中的每個按鈕分配標籤嗎?
謝謝!
我見過的人使用標記的iPhone編程,像內標籤或實現代碼如下細胞:在iphone編程中使用標籤 - 有人可以解釋嗎?
name.tag = kNameTag
有人可以用一個例子解釋這些標籤是如何使用?我認爲這樣可以在以後引用ui元素?就像如果你以編程方式使用for循環在iphone屏幕上創建一個UIButton數組,你可以爲for循環中的每個按鈕分配標籤嗎?
謝謝!
你在問題中包含的例子是常見的例子之一。
您可以在循環中實例化按鈕(或其他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
方法。這在構建不帶子類的自定義視圖時非常有用(或者您不想持有對子視圖的引用,但知道標記的情況)。
標記是整數。你使用UIView.tag將它們分配給視圖。然後,您使用-[UIView viewWithTag:]
來搜索視圖的視圖層次結構。
UIKit不使用標籤(我認爲),所以它們可以根據需要隨意使用。但是,標籤對於您的應用程序來說是全球性的,所以它們不是IBOutlet的理想替代品(但是當您有很多視圖時通常會更方便)。
避免使用0作爲標記,因爲它是默認標記— [v viewWithTag:0]
不太可能返回您正在查找的視圖。