手动将视图推送到另一个视图(ObjC)

时间:2013-11-30 18:21:25

标签: ios objective-c cocoa-touch storyboard segue

我现在被困在这2天了,搜索了近27个差异堆栈溢出的答案但却无法做到这一点 我想手动将我的视图推送到不同的视图,我用标识符gameView创建了一个Segue,并尝试使用prepareForSegueWithIdentifier方法,但它不起作用,总是说我的viewController找不到标识符为“gameView”的segue,即使它存在。

以下是一些可以更好理解的屏幕截图:

The Segue in my storyboard

The Code to push to gameViewController

The Error, btw it doesnt reach prepareForSegue part

早些时候,我使用的是相同的代码,这是在prepareForSegue中(没有使用手动推送所以没有prepareWithIdentifier),因为之前我正在从单元格选择中推送视图并且它正在工作,但现在我需要手动推送视图,因为实现异步任务等。

对此有任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在看到你的项目之后,我看到你正在使用segue,并弄乱了它使程序混淆,我删除它并使用UITableView的委托方法选择系统

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

然后处理一些数据,当它完成时,我使用方法

呈现正确的ViewController
presentViewController:(UIViewController *)viewController animate:(BOOL)animate completion:^{block}

答案 1 :(得分:0)

ViewControllerYouWantToChangeTo *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ID"];
[self presentViewController:vc animated:YES completion:nil];

ID指的是故事板或要更改为的

而不是使用

[self dismissViewControllerAnimated:YES completion:nil];//<-- this could cause a warning

使用:

[[[self parentViewController] parentViewController] dismissViewControllerAnimated:YES completion:nil];