此处讨论的工作流程如下:
用户点击创建游戏,调用游戏模型来创建游戏。
- 这里需要做的是对View Controller进行某种形式的回调以确认游戏是否已创建,以便可以将新的VC推送到屏幕上?实现这一目标的最佳方法是什么。
向用户显示提示,决定如下创建游戏:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"button %i",buttonIndex);
if (buttonIndex == 0) {
// Cancel button pressed we will clear the gameNewOpponentUser to be clean
self.gameNewOpponentuser = nil;
} else {
// Start Game button pressed
[MESGameModel createNewGameWithUser:[PFUser currentUser] against:self.gameNewOpponentuser];
}
}
然后游戏模型用Parse创建一个游戏,如下所示:
PFObject *newGame = [PFObject objectWithClassName:@"Game"];
[newGame setObject:[PFUser currentUser] forKey:kMESGameUser1];
[newGame setObject:user2 forKey:kMESGameUser2];
[newGame saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
}
}];
正如您所看到的,我已经成功了,我可以用来确认它是否已正确创建。但是,如何将从模型中创建的VC反馈给VC。
答案 0 :(得分:0)
最好的方法是使用协议/委托系统。
点击此链接:http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html
这是相当古老和非常基本的,但应该准确地提供你做你想做的事情所需的信息。
答案 1 :(得分:0)
使用完成块。
在你的模型中为你的游戏创建方法添加一个完成处理程序:
-(void) startNewGameWithCompletionHandler: (void(^)()) handler {
PFObject *newGame = [PFObject objectWithClassName:@"Game"];
[newGame setObject:[PFUser currentUser] forKey:kMESGameUser1];
[newGame setObject:user2 forKey:kMESGameUser2];
[newGame saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
if (handler) handler(); //execute the code-block provided by the caller
}
}];
}
在你的viewController中:
[modelObject startNewGameWithCompletionHandler: ^{
//push some vc here or whatever....
}];
当然你也可以为块定义一些参数(例如传递成功变量或你可能需要的任何其他东西),或者你可能想要进行一些错误检查/处理。