Вот другой подход, использующий переменную состояния или управления для представления, чтобы определить, что он должен делать дальше при нажатии кнопки.
// 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
}
}
надеюсь, что поможет, если нет, спросите в комментариях.
[EDIT]
ОК, после того, как вы объяснили ссылку DA / ME / ME2, я получил то, что вы ищете.
То, что вы, возможно, захотите сделать, это сохранить ваш диалог в списке, чтобы загрузить в NSDictionary. (читай NSDictionary)
Каждый NSDictionary должен выглядеть следующим образом:
ключ = значение
@ "prompt" = @ "привет, меня зовут Боб"
@ "MEAN" = NSDictionary объект для следующего выбора convo для среднего
@ "NICE" = NSDictionary объект для следующего выбора convo для nice
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