在UINavigationController中推送另一个View?

时间:2011-07-19 14:57:30

标签: iphone xcode uinavigationcontroller uitabbarcontroller

如何使用导航控制器中的按钮推送视图? 我试着效仿这个例子: http://www.cimgf.com/2009/06/25/uitabbarcontroller-with-uinavigationcontroller-using-interface-builder/

这正是我需要的,我有一个UITabBarController有4个标签,其中一个是UINavigationController。我想从第一个视图推送包含导航控制器的视图 - 这是一个简单的UIView。它不起作用,我尝试使用以编程方式创建的按钮,没有任何反应。有什么指针吗?

这是我的代码

@interface HomeViewController : UIViewController {

}

-(IBAction)pushViewController:(id)sender;

@end

---

#import "HomeViewController.h"
#import "NewViewController.h"

@implementation HomeViewController

-(IBAction)pushViewController:(id)sender {
        NewViewController *controller = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
    [[self navigationController] pushViewController:controller animated:YES];
    [controller release], controller = nil;
}

以下是连接的屏幕截图 http://imageshack.us/photo/my-images/847/screenshot20110719at620.png/

我已经尝试过你们建议但仍然没有,按钮(无论是在Interface Builder还是以编程方式创建)都表现得像是没有链接到任何方法。

3 个答案:

答案 0 :(得分:7)

将其放在要创建按钮的位置:(例如Root VC的-viewDidLoad

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100.0, 100.0, 100.0, 40.0);
[button setTitle:@"Press" forState:UIControlStateNormal];
[viewController.view addSubview:button];

[button addTarget:self action:@selector(didPressButton:) forControlEvents:UIControlEventTouchUpInside];

并实施此方法:

- (void)didPressButton:(UIButton *)sender
{
    UIViewController *viewController = [[[UIViewController alloc] init] autorelease];
    [self.navigationController pushViewController:viewController animated:YES];
}

答案 1 :(得分:3)

如果您使用情节提要,请手动创建一个segue

在故事板上:

  • 点击视图
  • 然后在右侧边栏顶部菜单中选择“显示连接检查器”
  • 在“触发的段”中,单击并将“手动”触发器拖动到要推送的视图
  • 在将出现的弹出菜单中选择“推送”

它会创建一个segue,现在选择segue并给它一个标识符

现在您可以使用代码:

-(IBAction)doneAction:(id)sender
{
    [self performSegueWithIdentifier:@"identifier" sender:self ];
}

现在您可以将操作连接到按钮

答案 2 :(得分:1)

要将视图推送到导航控制器,只需执行以下操作:

YourController *childController = [[YourController alloc] initWithNibName:@"YourControllerView" bundle:NSBundle.mainBundle];
[self.navigationController pushViewController:childController animated:YES];
[childController release];

现在,如果您希望按下按钮时发生这种情况,请在您的nib文件中添加一个按钮,并将其连接到Touch Up Inside事件中的IBAction方法。