我真的無法理解爲什麼這種方式無法正常工作。 我有一個TableViewController與動態原型。我在一個名爲「InfoCell」的原型中放置了4個標籤,並給了它們一些限制。 如果我運行下面的cellForRowAtIndexPath應用:使用viewWithTag獲取UITableviewCell中的標籤時約束不起作用
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"InfoCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
return cell;
}
我所得到的是這樣的。 Everything looks fine 'til now
我這樣做只是爲了檢查標籤是否顯示在正確的位置。該頁面應該顯示2個單元格,所以一切看起來都很好。
現在,當我嘗試獲取對標籤的引用以更改文本時,問題就開始了。即使沒有實際更改文字,如果我的代碼如下所示:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"InfoCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
UILabel *nameLabel = (UILabel *)[cell viewWithTag:10];
UILabel *surnameLabel = (UILabel *)[cell viewWithTag:20];
UILabel *roleLabel = (UILabel *)[cell viewWithTag:30];
UILabel *spouseNameLabel = (UILabel *)[cell viewWithTag:40];
[cell addSubview:nameLabel];
[cell addSubview:surnameLabel];
[cell addSubview:roleLabel];
[cell addSubview:spouseNameLabel];
return cell;
}
我明白了。 Labels' positions went nuts
我試過了,例如,改變每個標籤的編程框架,
nameLabel.frame = CGRectMake(15.0, 50.0, 120.0, 20.0)
,但它只是沒有做任何事情,我想是因爲自動佈局啓用了...但我在項目中太遠以禁用自動佈局。另外,我已經看到了viewWithTag的用法,就像我上面寫的一樣,不需要以編程方式重新定位標籤,所以它讓我不知道那裏真的發生了什麼!
爲什麼你再次添加到單元格? –
問題是沒有得到參考,問題是再次添加它們可能會破壞它們的約束。 – luk2302
上帝。我知道HAD是愚蠢的。我覺得很愚蠢,我在這上面花了太多時間。 – Fraje90