ポップアップ メニューとして機能する があり、UITableView
その幅を最も広い の幅に設定したいと考えていますUITableViewCell
。ただし、セルUILabel
/の幅を取得しようとしましたがcontentView
、常に0が返されます。サブビューに追加した後、テーブルをリロードした後でも同じ結果になります。メソッド内とtableView:cellForRowAtIndexPath:
メソッド外で実行しましたが、結果は同じです。これを行うことは可能ですか?私のコードは以下のとおりです。
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (tableViewCell == nil)
{
tableViewCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
}
[[tableViewCell textLabel] setFont:[UIFont fontWithName: @"Helvetica-Bold" size: 17]];
[[tableViewCell textLabel] setText: [self.menuItems objectAtIndex:0]];
[[tableViewCell imageView] setImage: [self.menuItems objectAtIndex:1]];
if (tableViewCell.textLabel.frame.size.width > tableView.frame.size.width)
{
CGRect tableViewFrame = tableView.frame;
tableViewFrame.size.width = tableViewCell.textLabel.frame.size.width;
tableView.frame = tableViewFrame;
}
return tableViewCell;
}
更新: 明確にするために、TableView のリロード中に TableViewCell の幅を変更することに興味はありません。テーブルをロードしてから、適切な最大幅を計算してから、新しい適切な幅で再度リロードしても問題ありません。