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