在if语句中声明CGRect

Pre*_*ton 0 iphone objective-c

我有一个if语句,检查数组是否有某个项目:

    if ([[subTitles objectAtIndex:indexPath.row] isEqualToString:@""]) {
Run Code Online (Sandbox Code Playgroud)

并在其中包含此代码:

CGRect CellFrame = CGRectMake(0, 0, 300, 44);

然后我有一个带有相同内容的else语句,但显然具有不同的值.

看起来像这一切:

if ([[subTitles objectAtIndex:indexPath.row] isEqualToString:@""]) {
    CGRect CellFrame = CGRectMake(0, 0, 300, 44);
} else {
    CGRect CellFrame = CGRectMake(0, 0, 300, 60);
}
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中,我试图使用CellFrame,但它说它是未声明的.制作CGRect if/else语句而不必将所有代码放在每个语句中的正确方法是什么?请说如果我不清楚,我可以提供更多细节.谢谢.

ugh*_*fhw 6

您需要在if/else语句之外定义变量.当你把它放在里面时,它只对该语句中的代码可见,并在退出时被销毁.此外,由于只有高度不同,您可以在if语句之外指定矩形的其他部分.

CGRect CellFrame;
CellFrame.origin = CGPointMake(0,0);
CellFrame.size.width = 300;
if([[subTitles objectAtIndex:indexPath.row] isEqualToString:@""]) {
    CellFrame.size.height = 44;
} else {
    CellFrame.size.height = 60;
}
Run Code Online (Sandbox Code Playgroud)