下面是一种不同的方法,使用视图的状态或控制变量来确定在按下按钮后应该执行的操作。
// pseudo-code based on your example
-(IBAction) buttonPress1
if (a) {
do something
self.setState = stateA;
} else if (b) {
do something else
self.setState = stateB;
}
-(IBAction) buttonPress2
if (self.state == stateA) {
if (a) {
do something
} else if (b) {
do something
}
}
希望有助于,如果不是,请在评论中提出要求。
[编辑]
OK,你解释了DA/ME/ME2参考后,我才知道自己在找什么。
你可能会想要做的是将你的对话存储在plist中,以加载到NSDictionary中。 (上的NSDictionary读了)
每NSDictionary的应该是这样的:
键=值
@ “提示”= @ “嗨,我的名字是鲍勃” @ “是指”=的NSDictionary对象接下来康沃选择均值 @“NICE” =的NSDictionary对象为下康沃的选择。不错
const BOOL NICE = YES;
const BOOL MEAN = !NICE;
NSDictionary *convo = //loaded to initial starting point from your plist file
- (IBAction) playerChoseMean:(id)sender
{
[self sayConvo:convo withChoice:MEAN];
}
- (IBAction) playerChoseNice:(id)sender
{
[self sayConvo:convo withChoice:NICE];
}
- (void) sayConvo:(NSDictionary)convo withChoice:(BOOL)b
{
NSLog(@"NPC says: %@", [convo valueForKey:@"prompt"]);
if(b) {
convo = (NSDictionary*)[convo valueForKey:@"NICE"];
} else {
convo = (NSDictionary*)[convo valueForKey:@"MEAN"];
}
if (convo == [NSNull null] || convo == nil) then continue;
//else continue
}
下面是一个例子NSDictionary的图应该让你开始。
NSDictionary *intro = [NSDictionary dictionaryWithCapacity:3];
NSDictionary *nice = [NSDictionary dictionaryWithCapacity:3];
NSDictionary *nicenice = [NSDictionary dictionaryWithCapacity:3];
NSDictionary *nicegoodbye = [NSDictionary dictionaryWithCapacity:3];
NSDictionary *mean = [NSDictionary dictionaryWithCapacity:3];
NSDictionary *meangoodbye = [NSDictionary dictionaryWithCapacity:3];
[intro addValue:@"hi there!" forKey:prompt];
[intro addValue:nice forKey:@"NICE"];
[intro addValue:mean forKey:@"MEAN"];
[nice addValue:@"that was nice" forKey:prompt];
[nice addValue:nicenice forKey:@"NICE"];
[nice addValue:mean forKey:@"MEAN"];
[nicenice addValue:@"awww" forKey:prompt];
[nicenice addValue:nicegoodbye forKey:@"NICE"];
[nicenice addValue:mean forKey:@"MEAN"];
[nicegoodbye addValue:@"you were super nice, here's a bonus for being so nice" forKey:prompt];
[nicegoodbye addValue:[NSNull null] forKey:@"NICE"];
[nicegoodbye addValue:[NSNull null] forKey:@"MEAN"];
[mean addValue:@"that was mean" forKey:prompt];
[mean addValue:nice forKey:@"NICE"];
[mean addValue:meangoodbye forKey:@"MEAN"];
[meangoodbye addValue:@"you're a jerk! goodbye!" forKey:prompt];
[meangoodbye addValue:[NSNull null] forKey:@"NICE"];
[meangoodbye addValue:[NSNull null] forKey:@"MEAN"];
看看这个很好的例子在上GameDeve.SE
重新标记,因为这心不是什么做的Objective-C,它是一个传统的C查询 – 2011-01-25 16:13:38
我的道歉。我所做的唯一一个与C相关的事情不是Objective-C,它是一个Box2D(Cocos2D物理引擎)教程中的C++的窥视。不完全相同,但你明白了。 – Thromordyn 2011-01-25 16:16:36
调试器不会做你想要的吗?或者,除了检查代码的运行时行为还有更多吗? – 2011-01-25 16:29:52