Ios UIButton选定状态图像在自动旋转时冻结

Ios UIButton选定状态图像在自动旋转时冻结,ios,objective-c,uitableview,uibutton,autorotate,Ios,Objective C,Uitableview,Uibutton,Autorotate,我在UITableView的页脚有一个UIButton。它的未选中状态为空复选框,选中状态为复选框。它在纵向效果很好,但如果视图旋转到横向,按钮的图像将冻结在旋转时的任何状态。旋转后按钮仍能正确发送消息,但图像不会改变 self.theButton = [UIButton buttonWithType:UIButtonTypeCustom]; [self.theButton setImage:checkbox forState:UIControlStateNorm

我在UITableView的页脚有一个UIButton。它的未选中状态为空复选框,选中状态为复选框。它在纵向效果很好,但如果视图旋转到横向,按钮的图像将冻结在旋转时的任何状态。旋转后按钮仍能正确发送消息,但图像不会改变

self.theButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.theButton setImage:checkbox
                forState:UIControlStateNormal];
[self.theButton setImage:checkedBox
                forState:UIControlStateSelected];
此代码出现在我的视图控制器的tableView:ViewForFooterInstition:中。在链接到按钮的操作中,我设置self.theButton.selected=!self.theButton.selected


发生了什么事?

您可以在按钮操作中执行此操作

- (void)didTapCheckbox:(id)sender {
    UIButton *btn =(UIButton *)sender;
    if (btn.selected == YES) {
        [btn setSelected:NO];
    }
    else{
        [btn setSelected:YES];
    }
}

不要编写代码,只需执行以下操作

if(self.theButton == nil){
    self.theButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.theButton setImage:checkbox
            forState:UIControlStateNormal];
    [self.theButton setImage:checkedBox
            forState:UIControlStateSelected];
}

此代码非常可疑:self.theButton.selected=!self.theButton.selected您不应该从与选择一起调用的处理程序内部操纵选择状态。没有该代码,按钮的选择状态根本不会更改,并且显示的图像始终是uicontrol状态正常状态。这并没有解决我的问题。。。该结果确实消除了所选属性不正确的可能性。谢谢你的信息!您在tableView:ViewForFooterInstitution中编写按钮代码,所以当设备进入横向模式时,它会调用更多按钮,从而创建一个新按钮。因此,你面临这个问题