it-swarm.com.ru

Контроллер навигации Push View Controller

Вопрос

Как перейти от одного контроллера представления к другому, просто используя сенсорную кнопку внутри события?

Больше информации

То, что я попробовал в примере проекта, по шагам, было:

  1. Создайте пример приложения для одного представления.

  2. Добавьте новый файл -> Objective-C Class с XIB для пользовательского интерфейса (ViewController2).

  3. Добавьте кнопку в ViewController.xib и управляйте щелчком кнопки в ViewController.h, чтобы создать событие внутренней обработки.

  4. Перейдите к недавно созданному IBAction в ViewController.m и измените его на этот ...

    - (IBAction)GoToNext:(id)sender 
    {
        ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
    
        [[self navigationController] pushViewController:vc2 animated:YES];
    }
    

Код работает без ошибок, и я проверил функциональность кнопки с NSLog. Однако это все еще не переместит меня ко второму контроллеру представления. Любая помощь будет оценена.

30
Ahmed Elashker

Swift3

 **Push**

нравится

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as NewsDetailsViewController 
 vc.newsObj = newsObj
 navigationController?.pushViewController(vc,
 animated: true)

или безопаснее

  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)
        }
    }

подарок

   let storyboard = UIStoryboard(name: "Main", bundle: nil)
   let vc = self.storyboard?.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as! NewsDetailsViewController
      vc.newsObj = newsObj
           present(vc!, animated: true, completion: nil)  

или безопаснее

   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];
}

Свифт

//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)
}
53
Anbu.Karthik
    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"storyBoardName" bundle:nil];
    MemberDetailsViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentiferInStoryBoard"];
[self.navigationController pushViewController:viewControllerName animated:YES];

Свифт 4:

let storyBoard = UIStoryboard(name: "storyBoardName", bundle:nil)
let memberDetailsViewController = storyBoard.instantiateViewController(withIdentifier: "viewControllerIdentiferInStoryBoard") as! MemberDetailsViewController
self.navigationController?.pushViewController(memberDetailsViewController, animated:true)
13
Sandy Rawat

Используйте этот код в вашем действии кнопки (Swift 3.0.1):

let vc = self.storyboard?.instantiateViewController(
    withIdentifier: "YourSecondVCIdentifier") as! SecondVC

navigationController?.pushViewController(vc, animated: true)
2
Harshit Goel

Для Swift используйте следующий код:

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

    // Create a nav/vc pair using the custom ViewController class

    let nav = UINavigationController()
    let vc = NextViewController(nibName: "NextViewController", bundle: nil)

    // Push the vc onto the nav
    nav.pushViewController(vc, animated: false)

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

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

}

ViewController:

 @IBAction func Next(sender : AnyObject)
{
    let nextViewController = DurationDel(nibName: "DurationDel", bundle: nil)

    self.navigationController.pushViewController(nextViewController, animated: true)
}
2
PREMKUMAR

Используя этот код для навигации по следующему viewcontroller, если вы используете раскадровку, следуйте приведенному ниже коду,

UIStoryboard *board;

if (!self.storyboard)
{
    board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
}
else
{
    board = self.storyboard;
}

ViewController *View = [board instantiateViewControllerWithIdentifier:@"yourstoryboardname"];
[self.navigationController pushViewController:View animated:YES];
2
Preetha

Если вы используете Swift:

let controller = self.storyboard!.instantiateViewControllerWithIdentifier("controllerID")
self.navigationController!.pushViewController(controller, animated: true)
0
petrsyn

Это работает отлично:

PD: Не забудьте импортировать целевой VC:

#import "DestinationVCName.h"

    - (IBAction)NameOfTheAction:(id)sender 
{
       DestinationVCName *destinationvcname = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationVCName"];
    [self presentViewController:destinationvcname animated:YES completion:nil];
}
0
Victor Rius
UIViewController *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboardId"];
[self.navigationController pushViewController:vc animated:YES];
0
Maulik Salvi

AppDelegate для ViewController:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let loginPageView = mainStoryboard.instantiateViewControllerWithIdentifier("leadBidderPagerID") as! LeadBidderPage
var rootViewController = self.window!.rootViewController as! UINavigationController
rootViewController.pushViewController(loginPageView, animated: true)

Между ViewControllers:

let loginPageView = self.storyboard?.instantiateViewControllerWithIdentifier("scoutPageID") as! ScoutPage
self.navigationController?.pushViewController(loginPageView, animated: true)
0
A.G
-  (void) loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                error:(NSError *)error{
    UINavigationController *nav = [self.storyboard instantiateViewControllerWithIdentifier:@"nav"];
    ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"LoggedInVC"];
    [nav pushViewController:vc animated:YES];
    [self presentViewController:nav animated:YES completion:nil];
}

«nav» - это Storyboard ID для моего контроллера навигации «vc» - это Storyboard ID для моего первого контроллера представления, подключенного к моему навигационному контроллеру.

-надеюсь это поможет

0
sellmaurer

UINavigationController не представлен автоматически в UIViewController.

Это то, что вы должны увидеть в Интерфейсном Разработчике. Владелец файлов имеет выходное изображение для контроллера навигации, а из навигационного контроллера - выход к реальному виду;

Interface Builder

0
Vojtech Vrbka