কীভাবে এক ভিউ কন্ট্রোলার থেকে অন্যটিতে সুইফ্ট ব্যবহার করে নেভিগেট করা যায়


85

আমি এক ভিউ কন্ট্রোলার থেকে অন্য ভিউতে নেভিগেট করতে চাই। আমি কীভাবে নীচের উদ্দেশ্য-সি কোডটিকে সুইফটে রূপান্তর করতে পারি?

UIViewController *viewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"Identifier"];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController pushViewController:navi animated:YES];

উত্তর:


210

দ্বিতীয় ভিউ নিয়ন্ত্রকের জন্য একটি সুইফ্ট ফাইল (সেকেন্ডভিউকন্ট্রোলআরসউইফ্ট) তৈরি করুন এবং উপযুক্ত ফাংশনে এটি টাইপ করুন:

let secondViewController = self.storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as SecondViewController
self.navigationController.pushViewController(secondViewController, animated: true)


সুইফট 2+

let mapViewControllerObj = self.storyboard?.instantiateViewControllerWithIdentifier("MapViewControllerIdentifier") as? MapViewController
self.navigationController?.pushViewController(mapViewControllerObj!, animated: true)

সুইফট 4

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "IKDetailVC") as? IKDetailVC
self.navigationController?.pushViewController(vc!, animated: true)

@ অড্রে, হাই, নেভিগেশনকন্ট্রোলার সেট করবেন কীভাবে?
সানজিভানি

@ সানজিভানি, হাই আপনার ভিউ কন্ট্রোলারটি স্টোরিবোর্ডের সাহায্যে তৈরি করা যেতে পারে এবং আপনার প্রথমভিউ কনট্রোলারকে রুটভিউ কনট্রোলার হিসাবে অর্পণ করতে পারেন আপনার ন্যাভিগেশন কন্ট্রোলার (সুইফ্ট) শ্রেণিটি এর মতো দেখাবে:import UIKit class SwiftNavigationController: UINavigationController { init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) // Custom initialization }`` override func viewDidLoad() { super.viewDidLoad() }
অড্রে সোবগৌ জ্যাবাজে

4
আমারও একই সমস্যা ছিল, আমি কীভাবে একজন ভিউকন্ট্রোলার থেকে অন্য ভিউতে নেভিগেট করতে পারি তাতে আটকে ছিলাম। আমি এই কোডটি চেষ্টা করার সময়, আমি এই ত্রুটিটি পাচ্ছি: unexpectedly found nil while unwrapping an Optional valueআপনার কোডের দ্বিতীয় লাইনে। দয়া করে সহায়তা করুন
রাঘবেন্দ্র

4
অ্যানিমেটেড: প্যারামিটারটির মতো আমি একটি সমস্যা পেয়েছি: "এক্সপ্রেশনটির ধরণের '$ T7 ??' রূপান্তর করতে পারছি না 'বুলিয়ানলাইটারাল কনভার্টেবল' টাইপ করতে "।
মোরক্রোম

4
আপনার কন্ট্রোলাররা এটি কাজ করার জন্য একটি নেভিগেশন নিয়ন্ত্রণকারীকে এম্বেড করেছেন তা নিশ্চিত করা দরকার, অন্যথায় আপনি ত্রুটি পাবেন।
কাকুবেই

35

আমার অভিজ্ঞতা navigationControllerশূন্য ছিল তাই আমি আমার কোডটি এতে পরিবর্তন করেছি:

let next = self.storyboard?.instantiateViewControllerWithIdentifier("DashboardController") as! DashboardController
self.presentViewController(next, animated: true, completion: nil)

ভুলবেন না ViewController সেট করতে StoryBoard Idমধ্যে StoryBoard->identity inspector


4
আপনার ভিউ কন্ট্রোলারটি নেভিগেশন ভিউ কন্ট্রোলারে অন্তর্ভুক্ত ছিল না কারণ এটি।
ফ্রান্সিস রেনল্ডস

18

আপনি যদি না চান তবে পিছনের বোতামটি প্রদর্শিত হবে (যা আমার ক্ষেত্রে ছিল, কারণ আমি কোনও ব্যবহারকারী লগ ইন করার পরে উপস্থাপন করতে চেয়েছিলাম) এখানে এনএভি কন্ট্রোলারের মূলটি কীভাবে সেট করা যায় তা এখানে:

let vc = self.storyboard?.instantiateViewControllerWithIdentifier("YourViewController") as! YourViewController
        let navigationController = UINavigationController(rootViewController: vc)
        self.presentViewController(navigationController, animated: true, completion: nil)


7

দ্রুত 4.0. এ

var viewController: UIViewController? = storyboard().instantiateViewController(withIdentifier: "Identifier")
var navi = UINavigationController(rootViewController: viewController!)
navigationController?.pushViewController(navi, animated: true)

4

সুইফট 3

let secondviewController:UIViewController =  self.storyboard?.instantiateViewController(withIdentifier: "StoryboardIdOfsecondviewController") as? SecondViewController

self.navigationController?.pushViewController(secondviewController, animated: true)

4

সুইফটে 4.1 এবং এক্সকোড 10 এ

এখানে অ্যাডফাইভিউকন্ট্রোলার হ'ল দ্বিতীয় দর্শন নিয়ামক।

স্টোরিবোর্ড আইডি এএফভিসি

let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
self.present(next, animated: true, completion: nil)

//OR

//If your VC is DashboardViewController
let dashboard = self.storyboard?.instantiateViewController(withIdentifier: "DBVC") as! DashboardViewController
self.navigationController?.pushViewController(dashboard, animated: true)

প্রয়োজনে থ্রেড ব্যবহার করুন

প্রাক্তন:

DispatchQueue.main.async { 
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil) 
}

আপনি যদি কিছু সময় পরে সরানো চান

প্রাক্তন:

//To call or execute function after some time(After 5 sec)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil) 
} 

3

দ্রুত 3

let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController        
self.navigationController?.pushViewController(nextVC, animated: true)

3
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let home = storyBoard.instantiateViewController(withIdentifier: "HOMEVC") as! HOMEVC
navigationController?.pushViewController(home, animated: true);

আমি মনে করি এটি সুইফট বা ওবজ্যাক সিনট্যাক্স নয়
স্পেটাল

2
let objViewController = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.navigationController?.pushViewController(objViewController, animated: true)

আপনি দয়া করে খুব শীঘ্রই ব্যাখ্যা করতে পারেন যে আপনার কোডটি কী করে, কেন এটি সমস্যার সমাধান করে এবং অন্যান্য উত্তরগুলির থেকে এটি কীভাবে আলাদা।
জেজেজে

এখানে আমি সনাক্তকারী হিসাবে স্টোরিবোর্ড আইডি ব্যবহার করছি। রেফারেন্সের মাধ্যমে (Vজভিউ কনট্রোলার) ভিউ কন্ট্রোলার শ্রেণিতে নিয়ন্ত্রণ
চাপান

1

সুইফট 4

আপনি সমস্ত প্রথম গৌণ নিয়ামক ধাক্কা দিয়ে পর্দা সুইচ করতে পারেন আপনার সেট করা আছে গৌণ নিয়ামক সঙ্গে UIViewController

let vc = self.storyboard?.instantiateViewController(withIdentifier: "YourStoryboardID") as! swiftClassName

self.navigationController?.pushViewController(vc, animated: true)

1

সুইফট 5

এক ভিউ কন্ট্রোলার থেকে অন্য দেখুন কন্ট্রোলারের কাছে নেভিগেশন সম্পাদন করতে সেগু ব্যবহার করুন:

performSegue(withIdentifier: "idView", sender: self)

এটি এক্সকোড 10.2 এ কাজ করে।


সিগুর ধরণ?
বিকাশকারী

1

AppDelegate এ আপনি এভাবে লিখতে পারেন ...

var window: UIWindow?

fileprivate let navigationCtrl = UINavigationController()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    self.createWindow()

    self.showLoginVC()

    return true
}

func createWindow() {
    let screenSize = UIScreen.main.bounds
    self.window = UIWindow(frame: screenSize)
    self.window?.backgroundColor = UIColor.white
    self.window?.makeKeyAndVisible()
    self.window?.rootViewController = navigationCtrl
}

func showLoginVC() {
    let storyboardBundle = Bundle.main
    // let storyboardBundle = Bundle(for: ClassName.self) // if you are not using main application, means may be you are crating a framework or library you can use this statement instead
    let storyboard = UIStoryboard(name: "LoginVC", bundle: storyboardBundle)
    let loginVC = storyboard.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
    navigationCtrl.pushViewController(loginVC, animated: false)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.