Ios UI按钮在场景转换后不会消失

Ios UI按钮在场景转换后不会消失,ios,objective-c,uibutton,Ios,Objective C,Uibutton,嘿,所以我创建了两个按钮,当按下时,将当前场景转换到下一个场景或主菜单,它们工作,但按下后,两个按钮都不会消失。他们都继续演下一场我不想演的戏。我尝试过隐藏按钮并将其从superView中移除,但都不起作用。下面是按下时发生的代码 -(IBAction)buttonPressed:(UIButton *)sender { if ([sender isEqual:self.continueButton]) { SKTransition* reveal = [SKTransi

嘿,所以我创建了两个按钮,当按下时,将当前场景转换到下一个场景或主菜单,它们工作,但按下后,两个按钮都不会消失。他们都继续演下一场我不想演的戏。我尝试过隐藏按钮并将其从superView中移除,但都不起作用。下面是按下时发生的代码

-(IBAction)buttonPressed:(UIButton *)sender
{
    if ([sender isEqual:self.continueButton]) {
        SKTransition* reveal = [SKTransition doorsCloseVerticalWithDuration:0.5];

        SKScene* transition2Scene = [[Transition2Scene alloc] initWithSize:self.size];
        [self.view presentScene:transition2Scene transition: reveal];
        [self.continueButton removeFromSuperview];
        self.continueButton.hidden = YES;
        self.continueButton.enabled = NO;

    }
    else {
        SKTransition* doors = [SKTransition doorsCloseVerticalWithDuration:0.5];

        SKScene* spriteMyScene = [[SpriteMyScene alloc] initWithSize:self.size];

        [self.view presentScene:spriteMyScene transition: doors];
        self.menuButton.hidden = YES;
        self.menuButton.enabled = NO;
        [self.menuButton removeFromSuperview];
    }
}
下面是按钮本身的编码

self.continueButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.continueButton.frame = CGRectMake(self.frame.size.width/3, self.frame.size.height * 0.5, 120, 70);
[self.continueButton setTitle:@"Continue" forState:UIControlStateNormal];
[self.continueButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.continueButton];

self.menuButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.menuButton.frame = CGRectMake(self.frame.size.width/3, self.frame.size.height * 0.6, 120, 70);
[self.menuButton setTitle:@"Main Menu" forState:UIControlStateNormal];
[self.menuButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.menuButton];

我已经四处寻找答案,尝试了一些方法,但都不起作用,因为我遇到的问题不太一样,所以非常感谢您的帮助,谢谢

转换到新场景时,场景及其内容将从视图中删除。视图(如按钮)不会被删除。您需要手动删除它们。这里有一个例子

- (IBAction) buttonPressed:(UIButton *)sender
{
    [self.continueButton removeFromSuperview];
    [self.menuButton removeFromSuperview];

    // Find and remove all UIButtons in your view
    for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[UIButton class]]) {
            NSLog(@"%@", view);
            [view removeFromSuperview];
        }
    }

    // Verify that the UIButtons were removed
    for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[UIButton class]]) {
            NSLog(@"this shouldn't happen: %@", view);
        }
    }

    // The rest of your code
或者,可以使用SKSpriteNode创建按钮并将其添加到场景中。这里有一个例子

- (IBAction) buttonPressed:(UIButton *)sender
{
    [self.continueButton removeFromSuperview];
    [self.menuButton removeFromSuperview];

    // Find and remove all UIButtons in your view
    for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[UIButton class]]) {
            NSLog(@"%@", view);
            [view removeFromSuperview];
        }
    }

    // Verify that the UIButtons were removed
    for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[UIButton class]]) {
            NSLog(@"this shouldn't happen: %@", view);
        }
    }

    // The rest of your code

它是否通过if[sender isEqual:self.continueButton]的内部?尝试使用sender==self.continueButtonOkay我的iAction方法在当前场景中按下每个按钮时,都已将removeFromSuperView作为其一部分,所以你是说我需要在下一场景中再次添加该方法?因为如果是这样,我只是尝试了一下,但是当我第二次单击它们时,我得到了EXC坏访问错误…removeFromSuperview是否在场景转换代码之前?是的,我按照你的建议更改了它们,但我仍然遇到同样的问题…在removeFromSuperview上设置一个断点,以查看实例变量是否正确。我已将代码添加到我的答复尝试将这两个for循环复制到buttonPressed方法中。第一个循环查找视图中当前的UIButton并将其删除。第二个循环确保视图中没有任何UIButton。