在此GameListViewController
内调用代码:
[self presentViewController:[[StartNewGameViewController alloc]
initWithNibName:@"StartNewGameViewController" bundle:nil] animated:YES completion:nil];
StartNewGameViewController中的回调代码:
[(id)self.parentViewController showSetup:m_tableID];
[self dismissViewControllerAnimated:YES completion:^{
[GLVC showSetup:m_tableID];
}];
也尝试过:
[(id)self.GLVC showSetup:m_tableID];
在这里尝试了三种不同的方法。第一种方法有无错误,底部方法说show Setup没有已知的类方法,第三种方法也没有错误。第一个和第三个没有错误,但没有工作。
.h
的 StartNewGameController
#import "GamelistViewController.h"
@property (nonatomic, assign) GamelistViewController *GLVC;
我在.m
" showSetup"是一种从GameListViewController
调用时工作正常的方法,并在GameListViewController.h
中声明如下:
-(void)showSetup:(int)tableID;
我已经看到了与此相关的其他堆栈溢出问题,但没有一个问题解决了我的问题。
答案 0 :(得分:1)
[(id)self.parentViewController showSetup:m_tableID];
有效,因为会自动为您配置对parentViewController
的引用。
[GLVC showSetup:m_tableID];
应该是_GLVC
或者最好是self.GLVC
并且不起作用,因为您在呈现视图控制器之前从不设置引用。 (之前它没有用,因为你使用的是一个类名,因为命名不好而期望它是一个实例变量名,但事实并非如此)。
[(id)self.GLVC showSetup:m_tableID];
与上述内容完全相同(在新编辑的代码中)。
解决方案是在调用GLVC
之前在创建的视图控制器上设置presentViewController:animated:completion:
StartNewGameViewController *svc = [[StartNewGameViewController alloc] initWithNibName:@"StartNewGameViewController" bundle:nil];
svc.GLVC = self;
[self presentViewController:sec animated:YES completion:nil];
答案 1 :(得分:0)
这段代码我会猜测。 presentingViewController
会在呈现控制器时自动为您设置。
[self dismissViewControllerAnimated:YES completion:^{
[(id)self.presentingViewController showSetup:m_tableID];
}];