Objective c 为什么我的UIButton在I';ve button.enabled=否;?

Objective c 为什么我的UIButton在I';ve button.enabled=否;?,objective-c,uibutton,Objective C,Uibutton,我刚刚开始编程,我已经走了这么远,但我已经为此奋斗了一段时间,完全陷入困境。我用两副牌制作了一个10x10的扑克牌板。然后我在下面的-(void)显示板中制作了所有按钮。每个卡都有一个布尔属性卡。按钮用于确定是否应将其作为按钮启用 我把它们打开了,一切正常。它们一开始是不可触摸的,然后我打开它们,它们正确地调用(void)boardcard。然而,当我在那里关闭它们时,它们以图形方式显示为关闭,但当我触摸它们时,它们仍在调用(void)boardcard。如果我记录button属性,则说明设置正

我刚刚开始编程,我已经走了这么远,但我已经为此奋斗了一段时间,完全陷入困境。我用两副牌制作了一个10x10的扑克牌板。然后我在下面的-(void)显示板中制作了所有按钮。每个卡都有一个布尔属性卡。按钮用于确定是否应将其作为按钮启用

我把它们打开了,一切正常。它们一开始是不可触摸的,然后我打开它们,它们正确地调用(void)boardcard。然而,当我在那里关闭它们时,它们以图形方式显示为关闭,但当我触摸它们时,它们仍在调用(void)boardcard。如果我记录button属性,则说明设置正确。我怀疑这与我添加目标而不是删除目标有关,但我尝试的一切都没有区别

我还没有在这方面找到任何帮助,所以任何想法、提示或帮助都将不胜感激。顺便说一句,我怀疑我的尝试不是最优雅的,所以这里的提示也会很好。这是我能找到的唯一让我的卡片图像可选择的方法:)

-(无效)显示板{
板=[模型板];
对于(int x=0;x<10;x++){
对于(int y=0;y<10;y++){
卡片*tCard=[board getCardxpos:x ypos:y];
UIButton*button=[UIButton button类型:UIButtonTypeCustom];
button.tag=tCard.tag;
button.enabled=tCard.button;
button.adjustsImageWhenDisabled=否;
[按钮设置图像:tCard.image for状态:uicontrol状态正常];
button.frame=CGRectMake(tCard.xPos、tCard.yPos、tCard.sizeW、tCard.sizeH);
[按钮设置图像:tCard.image for状态:UIControlEventTouchUpInside];
[按钮添加目标:自我操作:@选择器(按BoardCard:)用于控制事件:UIControlEventTouchUpInside];
[(SequenceView*)self.view绘图:按钮];
}   
}
}
-(无效)BoardCard已按下:(id)发件人{
int tid=((UIControl*)发送者).tag;
int x=每日三班/10;
整数y=tid%10;
卡片*tCard=[[modelboard]getCardxpos:xypos:y];
tCard.selected=是;
tCard.button=否;
[自显示板];
}

在您的代码中,有些东西我并不完全清楚。据我所见,你创建了显示板,包括100个按钮;当触摸这些按钮中的任何一个时,会再次调用按下的
boardCardPressed
,然后再次创建该板,其中有100个按钮与原始按钮无关


难道这是注定的吗?或者这可能与您不理解的行为有关吗?

在您的代码中有一些我并不完全清楚的地方。据我所见,你创建了显示板,包括100个按钮;当触摸这些按钮中的任何一个时,会再次调用按下的
boardCardPressed
,然后再次创建该板,其中有100个按钮与原始按钮无关


难道这是注定的吗?或者这可能与您不理解的行为有关?

注意,您可以将它们缩进四个空格。编辑器工具栏中的“{}”按钮可以为您执行此操作。编辑您的问题并进行尝试。单击编辑器工具栏中的橙色问号,了解有关格式设置的详细信息和提示。注意,您可以将其缩进四个空格。编辑器工具栏中的“{}”按钮可以为您执行此操作。编辑您的问题并进行尝试。单击编辑器工具栏中的橙色问号,了解有关格式设置的更多信息和提示。啊-是的,这可能解释了这一点。也许我是在覆盖木板,触摸“穿透”?但是我想重新绘制网格,因为卡片重叠-有没有一种方法可以在不再次制作按钮的情况下进行此操作?我认为您可以将按钮保留在NSArray中,并对其进行迭代以修改其设置;或者你可以迭代你的电路板的子视图。。。不需要再创造;或者你可能想从头开始重新创建,但你也应该删除旧的板内容…谢谢sergio,这给了我很多思考的东西。我将尝试其中的一些建议。似乎,我对它在做什么一点概念都没有:)啊-是的,这也许可以解释。也许我是在覆盖木板,触摸“穿透”?但是我想重新绘制网格,因为卡片重叠-有没有一种方法可以在不再次制作按钮的情况下进行此操作?我认为您可以将按钮保留在NSArray中,并对其进行迭代以修改其设置;或者你可以迭代你的电路板的子视图。。。不需要再创造;或者你可能想从头开始重新创建,但你也应该删除旧的板内容…谢谢sergio,这给了我很多思考的东西。我将尝试其中的一些建议。似乎,我对它的工作一无所知:)
-(void)displayBoard{

    board = [model board];

    for (int x = 0; x < 10; x++){
        for(int y = 0; y < 10; y++){
            Card *tCard = [board getCardxpos:x ypos:y];

            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.tag = tCard.tag;            
            button.enabled = tCard.button;            

            button.adjustsImageWhenDisabled = NO;

            [button setImage:tCard.image forState:UIControlStateNormal];             

            button.frame = CGRectMake(tCard.xPos, tCard.yPos, tCard.sizeW, tCard.sizeH);            
            [button setImage:tCard.image forState:UIControlEventTouchUpInside];

            [button addTarget:self action:@selector(boardCardPressed:) forControlEvents:UIControlEventTouchUpInside];

            [(SequenceView *)self.view drawIt:button];    
        }   
    }
}


-(void)boardCardPressed:(id)sender {

    int tid = ((UIControl*)sender).tag;    
    int x = tid / 10;
    int y = tid%10;
    Card *tCard = [[model board] getCardxpos:x ypos:y];

    tCard.chosen = YES;
    tCard.button = NO;

    [self displayBoard];

}