Ios 运行时在UITableViewCell内调整UIView的宽度

Ios 运行时在UITableViewCell内调整UIView的宽度,ios,Ios,我有一个带有cellForIndexPath方法的UITableViewController,如下所示: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { BudgetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BudgetTableVi

我有一个带有cellForIndexPath方法的UITableViewController,如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    BudgetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BudgetTableViewCell" forIndexPath:indexPath];

    Budget *budget = [_budgets objectAtIndex:[indexPath row]];

    [cell configure:budget];

    return cell;
}



  @interface BudgetTableViewCell : UITableViewCell
    {

    }

    @property (nonatomic,weak) IBOutlet UILabel *titleLabel;
    @property (nonatomic,weak) IBOutlet UIView *remainingBudgetView;
在cell的configure方法中,我执行以下操作:

-(void) configure:(Budget *)budget
{
    self.remainingBudgetView.frame = CGRectMake(0, 0, 400, 300);

}

剩余的BudgetView是脚本中原型单元内的UIView。但上述内容不会改变剩余预算视图的宽度和高度。我做错了什么?

您的
IBOutlets
连接了吗?忘了吧,连我都问过:P

它不会这样做,因为从tableview出列的TableViewCell(并且没有使用
initWithSomething
)在准备绘制时会调用默认的LayoutSubview。因此,即使设置了框架,LayoutSubView也会覆盖框架更改,并将其设置为脚本中原型单元中视图的默认框架


出路可以是重新思考这个问题。也许您希望您的预算视图是一个
UILabel
或一组
UILabel
。您可以指定它们的全宽,并根据需要将文本向左或居中对齐。我希望我明白了

谢谢!但我希望我的remainingBudgetView是一个UIView,这样我就可以显示进度条类型的界面。像一个长方形。矩形的宽度表示剩余的预算量。PS:插座已连接。为什么需要在故事板中声明您的
剩余预算视图
?为什么在您的
-(void)configure:(Budget*)预算中不能简单地这样做{[self.remainingBudgetView removeFromSuperView];self.remainingBudgetView=[[UIView alloc]initWithFrame:CGRectMake(x,y,w,h)];}
。不需要在情节提要中声明UIView。你觉得怎么样?谢谢!最初我尝试过,但由于UITableViewCells被重用,每当UITableView滚动时,它都会弄乱单元格。我将再次尝试这种方法。谢谢这可能是因为您只是添加子视图,而不是删除它们。再次查看我的代码:我正在删除以前添加的任何子视图。请注意,如果转义此行,tableview将保持指向该视图的强指针,因此不会将其从tablviewcell中删除。因此,您需要自己删除子视图,然后分配新的对象实例。