我正在學習如何處理子視圖,並且我正在很難操縱其中一個子視圖的位置。每個子視圖都有一個唯一的標籤。值得注意的是,我在UITableCell中搜索子視圖,UITableView有大約5行。UIView子視圖沒有響應變化
如果我做任何這樣的:
UIView *mike = [self.view viewWithTag:6];
mike.frame = CGRectMake(250, 5, 25, 20);
mike.backgroundColor = [UIColor redColor];
NSLog(@"mike=%@ tag=%d",[[mike class] description], [mike tag]);
或:
UILabel *label = (UILabel *)[self.view viewWithTag:6];
label.frame = CGRectMake(250, 5, 25, 20);
label.backgroundColor = [UIColor redColor];
NSLog(@"label=%@ tag=%d",[label text], [label tag]);
子視圖不改變位置,但是如果我使用下面的代碼,它的工作搜索。
for (UIView *subview0 in [self.view subviews])
{
for (UIView *subview1 in [subview0 subviews])
{
for (UIView *subview2 in [subview1 subviews])
{
if ([[[subview2 class] description] isEqualToString: @"UILabel"])
{
[subview2 setText:@"mike"];
subview2.frame = CGRectMake(250, 5, 25, 20);
subview2.backgroundColor = [UIColor redColor];
}
}
}
}
任何幫助非常感謝。
麥克
編輯:從控制檯上執行
2011-03-10 19:53:42.344麥克=的UILabel標籤= 6 0x4b59610
2011-03-10 19:53:42.344標記= 842標記= 6 0x4b59610
2011-03-10 19:53:42.345 0-子視圖= PerformAnalysisCustomCell標籤= 0
2011-03-10 19:53:42.345 1-子視圖= UIGroupTableViewCellBackground標籤= 0
2011-03-10 19:53:42.346 2-subview = UIView tag = 0 0x4d62910
2011-03-10 19:53:42.349 1-subview = UITableViewCellContentView tag = 0
2011-03-10 19:53 :42.349 2-subview = UILabel tag = 0 0x4b51320
2011-03-10 19:53:42.350 2-subview = UILabel tag = 1 0x4b59290
2011-03-10 19:53:42.350 2-subview = UILabel標籤= 2 0x4b59370
2011-03-10 19:53:42.358 2-子視圖=的UILabel標籤= 3 0x4b59410
2011-03-10 19:53:42.359 2-子視圖=的UILabel標籤= 4 0x4b594b0
2011-03 -10 19:53:42.360 2-subview = UILabel tag = 5 0x4b59560
2011-03-10 19:53:42.360 2-subview = UILabel標記= 6 0x4b59610
將%p放入NSLog後,您可以將內存地址地址設置爲相同。其他標籤= 6行有不同的地址,所以我應該期望至少該單元格移動。
是self.view一個tableView?即使在所有表格單元中,標籤都是唯一的嗎?你在哪裏設置標籤的標籤? – GendoIkari 2011-03-10 19:32:28
是的。每個標籤對單元格都是唯一的,但是不會重複表格單元格中的整個表格。我在IB中設置標籤。 – hydev 2011-03-10 19:56:11
啊...那麼你需要在1個單元格上做viewWithTag,而不是在整個tableView上。如果您在tableView上執行viewWithTag,則只會獲得該標籤的第一個實例。 – GendoIkari 2011-03-10 19:59:36