dismissViewController完成:,需要加载函数,无法让它工作

时间:2014-04-30 14:14:18

标签: ios uiviewcontroller

在此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

的顶部合成 GLVC

" showSetup"是一种从GameListViewController调用时工作正常的方法,并在GameListViewController.h中声明如下:

-(void)showSetup:(int)tableID;

我已经看到了与此相关的其他堆栈溢出问题,但没有一个问题解决了我的问题。

2 个答案:

答案 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];
}];