首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航控制器推送视图控制器

导航控制器推送视图控制器
EN

Stack Overflow用户
提问于 2013-12-23 11:37:25
回答 14查看 177K关注 0票数 45

问题

如何简单地使用按钮的触摸内部事件从一个视图控制器导航到另一个视图控制器?

更多信息

我在一个示例项目中尝试的步骤是:

  1. 创建示例单视图应用程序。
  2. 添加一个新的文件->目标-C类与XIB的用户界面(ViewController2)。
  3. 在ViewController.xib中添加一个按钮,然后控件单击该按钮到ViewController.h,以创建touch up inside事件。
  4. 转到ViewController.m中新创建的IBAction并将其更改为.

  • (IBAction)GoToNext:(Id)发送方{ ViewController2 *vc2 = [ViewController2 alloc initWithNibName:@"ViewController2“bundle:nil];[self navigationController pushViewController:vc2动画:YES];}

代码运行时没有错误,我用NSLog测试了按钮的功能。但是,它仍然没有将我导航到第二个视图控制器。任何帮助都将不胜感激。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-12-23 11:53:23

Swift3

代码语言:javascript
复制
 **Push**

喜欢

代码语言:javascript
复制
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as NewsDetailsViewController 
 vc.newsObj = newsObj
 navigationController?.pushViewController(vc,
 animated: true)

或者更安全

代码语言:javascript
复制
  if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NewsDetailsVCID") as? NewsDetailsViewController {
        viewController.newsObj = newsObj
        if let navigator = navigationController {
            navigator.pushViewController(viewController, animated: true)
        }
    }

现式

代码语言:javascript
复制
   let storyboard = UIStoryboard(name: "Main", bundle: nil)
   let vc = self.storyboard?.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as! NewsDetailsViewController
      vc.newsObj = newsObj
           present(vc!, animated: true, completion: nil)  

或者更安全

代码语言:javascript
复制
   if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NewsDetailsVCID") as? NewsDetailsViewController
     {

     vc.newsObj = newsObj
    present(vc, animated: true, completion: nil)
    }





//Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController"
                                                       bundle:nil];
    UINavigationController *navigation = [[UINavigationController alloc]initWithRootViewController:self.viewController];
    self.window.rootViewController = navigation;
    [self.window makeKeyAndVisible];
    return YES;
}


//ViewController.m

- (IBAction)GoToNext:(id)sender 
{
    ViewController2 *vc2 = [[ViewController2 alloc] init];     
    [self.navigationController pushViewController:vc2 animated:YES];
}

swift

代码语言:javascript
复制
//Appdelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let navigat = UINavigationController()
    let vcw = ViewController(nibName: "ViewController", bundle: nil)

    // Push the vcw  to the navigat
    navigat.pushViewController(vcw, animated: false)

    // Set the window’s root view controller
    self.window!.rootViewController = navigat

    // Present the window
    self.window!.makeKeyAndVisible()
    return true
}

//ViewController.swift

@IBAction func GoToNext(sender : AnyObject)
{
    let ViewController2 = ViewController2(nibName: "ViewController2", bundle: nil)
    self.navigationController.pushViewController(ViewController2, animated: true)
}
票数 66
EN

Stack Overflow用户

发布于 2014-11-14 12:34:14

代码语言:javascript
复制
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"storyBoardName" bundle:nil];
MemberDetailsViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentiferInStoryBoard"];
[self.navigationController pushViewController:controller animated:YES];

Swift 4:

代码语言:javascript
复制
let storyBoard = UIStoryboard(name: "storyBoardName", bundle:nil)
let memberDetailsViewController = storyBoard.instantiateViewController(withIdentifier: "viewControllerIdentiferInStoryBoard") as! MemberDetailsViewController
self.navigationController?.pushViewController(memberDetailsViewController, animated:true)
票数 17
EN

Stack Overflow用户

发布于 2017-01-10 09:45:35

在按钮操作中使用此代码(Swift 3.0.1):

代码语言:javascript
复制
let vc = self.storyboard?.instantiateViewController(
    withIdentifier: "YourSecondVCIdentifier") as! SecondVC

navigationController?.pushViewController(vc, animated: true)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20742745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档