所以,我正在关注这个Xcode教程书:Iphone和Ipad Game Development for Dummies。这是一本好书,但这里和那里都存在一些缺陷。大多数时候我可以找到解决这些缺陷的方法,但现在我偶然发现了一些我无法解决的问题。甚至他们的网站或联系人也不知道答案。
我试图用汽车和东西制作游戏。但问题在于主菜单。我已经用自定义按钮模式制作了按钮。并使用IbActions使它们工作(实际上,“新游戏”是现在唯一有效的按钮,因为它的功能已经编写过)。但现在我必须让IBOutlets给他们一个动画。这本书告诉我使用QuartzCore.framework。现在的问题是,当我尝试构建它时,我收到此错误:在接口中找不到属性'newGameButton'的声明。
这是我的剧本。
标题文件:
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface MainMenuViewController : UIViewController {
//This has changed
@property(nonatomic,retain) IBOutlet UIButton* newGameButton;
@property(nonatomic,retain) IBOutlet UIButton* statsButton;
@property(nonatomic,retain) IBOutlet UIButton* settingsButton;
CAKeyframeAnimation* popAnimation;
}
-(IBAction) newGame:(id)sender;
-(IBAction) showStats:(id)sender;
-(IBAction) showSettings:(id)sender;
@end
.m文件(称为植入对吗?):
#import "MainMenuViewController.h"
#import "TrafficAppDelegate.h"
#import "TrafficViewController.h"
@implementation MainMenuViewController
-(IBAction) newGame:(id)sender{
TrafficViewController* traffic = [[TrafficViewController alloc] initWithNibName:@"TrafficViewController" bundle:nil];
[self.navigationController pushViewController:traffic animated:NO];
}
-(IBAction) showStats:(id)sender{
}
-(IBAction) showSettings:(id)sender{
}
@synthesize newGameButton, statsButton, settingsButton;
-(void)viewDidLoad{
[super viewDidLoad];
popAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
popAnimation.keyTimes = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:0.7], [NSNumber numberWithFloat:1.0], nil];
popAnimation.values = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.01], [NSNumber numberWithFloat:1.1], [NSNumber numberWithFloat:1.0], nil];
[popAnimation retain];
}
-(void)popView:(UIView*)view{
[view setHidden:NO];
[[view layer] addAnimation:popAnimation forKey:@"transform.scale"];
}
-(void)viewWillAppear:(BOOL)animated{
[popAnimation setDuration:0.3];
[newGameButton setHidden:YES];
[statsButton setHidden:YES];
[settingsButton setHidden:YES];
[self performSelector:@selector(popView:) withObject:newGameButton afterDelay:0.25];
[self performSelector:@selector(popView:) withObject:statsButton afterDelay:0.3];
[self performSelector:@selector(popView:) withObject:settingsButton afterDelay:0.35];
}
@end
现在我首先认为他们没有连接到“用户界面”构建器中的按钮。但那也没有用。我试图重拍整个剧本。我试图在Xcode中重新加载脚本。我甚至试图制作自己的版本。我没有任何选择。有谁知道我的剧本有什么问题?
答案 0 :(得分:3)
将头文件中对象的属性设置为
@property(nonatomic, retain) IBOutlet UIButton* newGameButton;
.
.
.
并在.m文件中合成它们
@synthesis newGameButton;
对您声明的所有对象执行此操作
然后在IB中连接它们
答案 1 :(得分:1)
你是否加载了正确的UIViewController?我的意思是,如果您正在使用界面构建器,请检查在您的主窗口xib中,您使用的viewController对象与您的MainMenuViewController类相对应
答案 2 :(得分:0)
你说你看到了:
&#34;没有财产声明&newGameButton&#39;在界面&#34;
中找到
必须合成在.h(标题)或.m(实现)中声明的任何属性:
@property (nonatomic,retain) IBOutlet UIButton* newGameButton;
对于.m(实现)
中的属性,这样 @synthesize newGameButton;