Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS更改UITableViewCell中UIButton的宽度_Ios_Objective C_Uitableview_Uibutton_Width - Fatal编程技术网

iOS更改UITableViewCell中UIButton的宽度

iOS更改UITableViewCell中UIButton的宽度,ios,objective-c,uitableview,uibutton,width,Ios,Objective C,Uitableview,Uibutton,Width,在自定义UITableViewCell中,我有一个UIButton。对于特定的单元格行对象,我想更改按钮的宽度。我尝试了很多方法,但无法以任何方式更改按钮的大小。我没有在此单元格中使用自动布局,因为此按钮包含文本和图像,并且使用自动布局无法正确设置文本和图像之间的间距 启动单元格并调用调整大小函数的cellForRowAtIndexPath的代码: } else if ([text isEqualToString:@"Now"] ) { //(indexPath.row == 2)

在自定义UITableViewCell中,我有一个UIButton。对于特定的单元格行对象,我想更改按钮的宽度。我尝试了很多方法,但无法以任何方式更改按钮的大小。我没有在此单元格中使用自动布局,因为此按钮包含文本和图像,并且使用自动布局无法正确设置文本和图像之间的间距

启动单元格并调用调整大小函数的cellForRowAtIndexPath的代码:

    } else if ([text isEqualToString:@"Now"] ) {    //(indexPath.row == 2) {
    vcell.listDataSource = inList;
    count = inList.count;
    vcell.listsTableView.tag = 2;
    [vcell reSizeButton];
自定义UITableViewCell中的方法:

-(void) reSizeButton {
CGRect btnFrame = self.button.frame;
btnFrame.size = CGSizeMake(157.0, btnFrame.size.height);
[self.button setFrame:btnFrame];

//[self.button sizeToFit];
//[self.button setNeedsDisplay];
[self.button setNeedsLayout];

return;
}
方法正在正确调用。因为它是在初始化单元格属性时被调用的,所以我认为我不需要调用它来重新加载单元格

更新:

调用reSizeButton方法后,我将调用setText方法:-

-(void) setButtonText :(NSString *) text withCount:(int)count isExpanded:(BOOL)expanded {
titleText = text;
countNums = count;
cellExpanded = expanded;

[self updateButtonText];

return;
}

-(void) updateButtonText {
countNums = (int)[self.listDataSource count];
NSString *str = [NSString stringWithFormat:@"%@ (%d) ", titleText, countNums ];

[self.button.titleLabel setFont:[UIFont fontWithName:@"OpenSans" size:12.0] ];
[self.button setTitle:str forState:UIControlStateNormal];
//[self.button sizeToFit];
[self.button setNeedsLayout];

return;

}
也许是他的错误导致了这个问题


你能指出我哪里做错了吗?长期以来我一直在尝试,但无法解决它。谢谢。

谢谢@Greg和@Grzegorz Krukowski。谢谢你花时间和精力帮助我

不知道是什么问题,但我再次取消选中了已取消选中的单元格xib中的AutoLayout复选框。再试一次。我的代码与问题中显示的代码相同。它开始按预期工作


上帝啊,我不能意识到问题并解决了问题

您确定在执行此操作时按钮已存在吗?检查self.button是否为!=零,也许你以后再创建按钮?对于帧操作,不需要特殊的附加调用。如果条件是,则直接在cellForRowAtIndexPath上更改按钮帧,按钮是my cell对象中的成员,并链接到nib文件中的按钮@属性非原子,强IBUIButton*按钮;你确定链接正确吗?@GrzegorzKrukowski,请检查更新的问题