2013-05-08 68 views
0

注意:IOS开发时的N00b。在过去10天左右,我已阅读了几篇教程和代码片段,并收集了足够多的信息以致有危险。我试图完成的是打开用户登录的webview(作为子视图),但由于某种原因,我的导航控制器不显示后退按钮。我尝试了一些不同的东西,但无济于事,显然我做错了什么,所以寻求指导。iOS - XCode 4 - iPhone 6.0 - 将子按钮添加回子视图

我的导航控制器被设置为根控制器,接下来在堆栈上是epViewController。这个视图控制器是应用程序的起点。从这个角度来看,我有两个按钮,一个用于登录,一个用于输入一些数据(对这个问题无关紧要)。

epViewController代码片段:

- (IBAction)buttonToLoginView:(id)sender 
{ 
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/wsapi/user/login"]]]; 

    [self.view addSubview:webView]; 
} 

这个伟大的工程,作为子视图显示导航栏和远程登录页面,但没有后退按钮。根据一些其他的代码片段我尝试以下(同epViewController文件中):

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back???" style:UIBarButtonItemStylePlain target:nil action:nil]; 

    self.navigationItem.backBarButtonItem = backButton; 
} 

但这种自定义按钮只有当我点击按钮,输入一些数据被添加(实际上是采用另一种具体的视图控制器vs子视图)。

我需要做什么才能将后退按钮添加到子视图?是否建议在这里使用子视图,我应该把它链接到另一个具体的视图控制器?

+1

只是想了解你使用的术语 - 你有一个名为'epViewController'的视图控制器作为你的根VC存在于导航控制器中。然后,在该视图控制器的视图中有一个Web视图子视图。但是你并没有将新的视图控制器推到原来的视图控制器上,那么后退按钮的作用究竟是什么? – 2013-05-09 00:01:56

+0

是的,你是对的。后退按钮应关闭子视图并呈现原始视图(2个按钮登录并输入数据)。 – 2013-05-09 00:05:18

+0

你必须推到一个新的控制器来获得后退按钮 - 你只是在你的根视图控制器中添加一个子视图。你最后一个问题的答案是肯定的。 – rdelmar 2013-05-09 00:07:04

回答

1

将导航控制器视为所有实际视图控制器的容器。从这个意义上讲,导航控制器并不是真正的“第一个堆栈”,你的epViewController是“下一个堆栈”。相反,导航控制器的实际堆栈,epViewController是其第一个(也是唯一的)项目。当您的应用启动时,导航控制器将显示其根视图控制器,这是您在屏幕上看到的内容。当您调用导航控制器的pushViewController:方法时,会将一个新的视图控制器压入堆栈,并显示后退按钮。

就你的情况,我建议不要在你的主视图上显示网络视图作为子视图。相反,把它放在它自己的视图控制器中。在这个视图控制器中,你可以添加后退按钮,就像你以前试图的那样。然后使用[self presentModalViewController:]以模态方式呈现该视图控制器。这会让用户感觉更有组织性和流畅性,并且避免了在主视图上摆弄子视图的业务。

+0

完成并完成。感谢您的指导。 – 2013-05-09 00:34:24

+0

没问题。祝你好运。 – 2013-05-09 00:37:04

相关问题