如何将新视图控制器添加到现有的导航视图中

3
我正在开发一个基础程序,类似这样的故事板: enter image description here 当按下UIButton时,将加载URL。如果URL请求成功,则打开“成功”视图(在右侧)。
一切都正常工作,但我似乎无法让导航控制器出现在成功视图上。 有人能帮帮我吗?此外,如果导航可以进入该视图,如何添加“返回”按钮以使用户返回主视图?
以下是我的代码:
UIStoryboard * mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NSLog(@"%@", status_code);
UIViewController *linkSuccess = [mainStoryboard instantiateViewControllerWithIdentifier:@"linkSuccess"];
[self presentViewController:linkSuccess
                   animated:YES
                 completion:NULL];

Peter
2个回答

6

从您的应用程序控制器 (屏幕截图左下角的小黄色图标) 拖动并控制连接到 Success 视图控制器,这会弹出一个框,询问您想要哪种转场。因为这是导航控制器,您需要一个 push 转场。在 storyboard 中,单击从您的应用程序控制器到成功控制器的新箭头,该箭头代表您的新转场,在属性检查器中给它命名,例如 showSuccess。

然后在您的 URL 请求成功代码中使用此代码:

[self performSegueWithIdentifier:@"showSuccess" sender:self];

如果你想自己实例化它(就像上面的代码一样),你需要将它添加到导航控制器中。例如:

UIStoryboard * mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NSLog(@"%@", status_code);
UIViewController *linkSuccess = [mainStoryboard instantiateViewControllerWithIdentifier:@"linkSuccess"];
[self.navigationController pushViewController:linkSuccess animated:YES];

我刚刚发现了segue类的功能,觉得可能是那个方向。我会试一下的! - Peter Stuart
它可以工作,但是当我点击返回按钮时,它不会带我回去。相反,我会得到一个返回屏幕,然后又出现一个返回按钮,上面写着“我的应用程序”。 - Peter Stuart
你是在做两个代码片段还是只有一个?导航控制器会跟踪堆栈上的应用程序,并在返回时遍历它们。所以如果它能正常工作,但无法返回,那就意味着导航控制器添加了两个视图而不是一个。返回按钮标题也应该是前一个视图控制器的标题 - 这是你添加了太多视图的线索。 - James
只要我点击它,它就会自动进入那个视图,然后读取我的代码并进入那个视图。所以它会进入那个视图两次。我该如何防止它的默认操作? - Peter Stuart
我是说要么在故事板中使用segue,要么调用[self.navigationController pushViewController:linkSuccess animated:YES];但是不要同时使用两者。 听起来你已经两个都使用了,这意味着故事板会推送一个控制器,而你的“My App”控制器会再推送另一个副本,这样就有两个了。 - James
显示剩余4条评论

0

你需要从'My App'控制器扩展成功视图控制器。点击'My App'视图控制器标题,在触控板上按住ctrl键并单击,然后将其移动到成功视图控制器。

应该会生效。


我尝试过了。我得到了三个选项:模态、推送和自定义。这三个都不起作用。彼得 - Peter Stuart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接