প্রবর্তিত - সুইফটে প্রাথমিক ভিউকন্ট্রোলার সেট করুন


147

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

প্রোগ্রামিয়ালি স্টোরিবোর্ড ব্যবহার করে প্রাথমিক ভিউ কন্ট্রোলার সেট করুন

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *viewController = // determine the initial view controller here and instantiate   it with [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];

    self.window.rootViewController = viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

কেউ সাহায্য করতে সক্ষম?

আমি চাই প্রাথমিক শর্তাদির নিয়ন্ত্রক শর্তসাপূর্ণ বিবৃতি ব্যবহার করে নির্দিষ্ট শর্ত পূরণ করা উচিত dependent


এটি এর একটি সম্ভাব্য সদৃশ: স্ট্যাকওভারফ্লো.com
মধু

উত্তর:


279

উদ্দেশ্য সিটিকে দ্রুত রূপান্তর করতে এবং এটি পুরোপুরি কার্যকরভাবে কাজ করতে আমাকে সহায়তা করতে আমি এই থ্রেডটি ব্যবহার করেছি।

সুইফটে একটি ভিউ কন্ট্রোলার ইনস্ট্যান্ট করুন এবং উপস্থাপন করুন

সুইফট 2 কোড:

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

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let initialViewController = storyboard.instantiateViewControllerWithIdentifier("LoginSignupVC")

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

    return true
}

সুইফট 3 কোড:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let initialViewController = storyboard.instantiateViewController(withIdentifier: "LoginSignupVC")

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

    return true
}


5
এপিডেলিজেটে প্রাথমিক ভিউ কন্ট্রোলার সেট করার বর্তমান মানক উপায় কি ? আমি জিজ্ঞাসা করলাম কারণ এটি হ্যাকের লিটল বিটের মতো দেখাচ্ছে (দুঃখিত @ অ্যাবস)।
rigdonmr

10
@ জিগডোনমর যদি অ্যাপ্লিকেশনটির স্টেইনবোর্ডটি মূল ইন্টারফেস হিসাবে সেট করা থাকে তবে উইন্ডোটি স্বয়ংক্রিয়ভাবে লোড হয়ে যায় এবং এর রুট ভিউ কন্ট্রোলারটি স্টোরিবোর্ডের প্রাথমিক ভিউ কন্ট্রোলারে সেট করা আছে। যদি শর্তের ভিত্তিতে ভিউ কন্ট্রোলার পরিবর্তন করতে হয়, বা অ্যাপ্লিকেশনটির কোনও প্রধান ইন্টারফেস নেই, তবে এটি আরম্ভ করার জন্য UIWindowএবং প্রোগ্রামটির ভিত্তিতে এটির রুট ভিউ নিয়ামক সেট করা গ্রহণযোগ্য ।
জাল

2
আশ্চর্যজনক (তবে ভাল) বিষয়টি হ'ল এইভাবে ভিউ কন্ট্রোলারটিকে ম্যানুয়ালি ইনস্ট্যান্ট করা আইওএসটি ডিফল্ট ভিউ নিয়ামককে তাত্ক্ষণিকভাবে থামানো থেকে প্রত্যাশিত। আমি সম্ভবত উভয় বোঝা হবে আশা। এই আচরণ কোথাও নথিভুক্ত করা হয়?
প্যাট নিমিমায়ার

2
@ মায়াঙ্কজাইন এটি সুইফট 3 এর সাথে দুর্দান্ত কাজ করে, কেবল পূর্ববর্তী সুইফ্ট থেকে কিছু কোডের অনুবাদ করতে হবে
জ্যাব

42

এটা চেষ্টা কর. উদাহরণস্বরূপ: আপনার UINavigationControllerপ্রাথমিক ভিউ কন্ট্রোলার হিসাবে ব্যবহার করা উচিত । তারপরে, আপনি স্টোরিবোর্ড থেকে যে কোনও ভিউ নিয়ন্ত্রককে রুট হিসাবে সেট করতে পারেন।

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let navigationController:UINavigationController = storyboard.instantiateInitialViewController() as UINavigationController
    let rootViewController:UIViewController = storyboard.instantiateViewControllerWithIdentifier("VC") as UIViewController
    navigationController.viewControllers = [rootViewController]
    self.window?.rootViewController = navigationController
    return true
}

দেখুন আমার স্টোরিবোর্ড পর্দা।


আপনি স্টোরিবোর্ডে কন্ট্রোলার দেখতে স্টোরিবোর্ড আইডি সেট করেছেন? Joxi.ru/l2ZYxZqS8JOomJ
প্রোটিকনফ

হ্যাঁ ইতিমধ্যে সেট করা হয়েছে, আমি মনে করি এটি সফলভাবে ভিউকন্ট্রোলারগুলি খুলছে, তবে এটি এটি 'প্রদর্শন করছে না'। কোন ধারনা?
আবুবকর মোলালিম

কোনও ত্রুটি নেই, পর্দার প্রবর্তনের পরে, আমি একটি কালো পৃষ্ঠা পেয়েছি
পেয়েছি

আমার ধারণা আমি সমস্যাটি পেয়েছি। আপনার স্টোরিবোর্ডে "ইস ইনিশিয়াল ভিউ কন্ট্রোলার" পরীক্ষা করা উচিত। joxi.ru/8AnNbQlhq3QOAO
প্রটিখোনফ

তবে আমি শর্তাধীন বিবৃতি ব্যবহার করে প্রাথমিক ভিউ কন্ট্রোলার পরিবর্তন করতে চাই।
আবুবকর মোলালিম

24

সুইফ্ট 3, সুইফট 4 এর জন্য:

স্টোরিবোর্ড থেকে রুট ভিউ কন্ট্রোলার ইনস্ট্যান্ট করুন:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // this line is important
        self.window = UIWindow(frame: UIScreen.main.bounds)

        // In project directory storyboard looks like Main.storyboard,
        // you should use only part before ".storyboard" as it's name,
        // so in this example name is "Main".
        let storyboard = UIStoryboard.init(name: "Main", bundle: nil)

        // controller identifier sets up in storyboard utilities
        // panel (on the right), it called Storyboard ID
        let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewControllerIdentifier") as! YourViewController

        self.window?.rootViewController = viewController
        self.window?.makeKeyAndVisible()        
        return true
    }

আপনি যদি UINavigationControllerরুট হিসাবে ব্যবহার করতে চান :

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // this line is important
        self.window = UIWindow(frame: UIScreen.main.bounds)

        let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
        let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewControllerIdentifier") as! YourViewController
        let navigationController = UINavigationController.init(rootViewController: viewController)
        self.window?.rootViewController = navigationController

        self.window?.makeKeyAndVisible()        
        return true
    }

Xib থেকে রুট ভিউ নিয়ন্ত্রক ইনস্ট্যান্ট করুন:

এটি প্রায় একই, তবে লাইনের পরিবর্তে

let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewControllerIdentifier") as! YourViewController

আপনাকে লিখতে হবে

let viewController = YourViewController(nibName: "YourViewController", bundle: nil)

22

আপনি যদি স্টোরিবোর্ড ব্যবহার না করে থাকেন তবে আপনি এটি ব্যবহার করে দেখতে পারেন

var window: UIWindow?
var initialViewController :UIViewController?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    initialViewController  = MainViewController(nibName:"MainViewController",bundle:nil)

    let frame = UIScreen.mainScreen().bounds
    window = UIWindow(frame: frame)

    window!.rootViewController = initialViewController
    window!.makeKeyAndVisible()

    return true
}

1
নিব নামটি কী বোঝায়?
আবুবকর মোলালিম

@ অ্যাবস নিবনেম হল ভিউটি ইনস্ট্যান্ট করার জন্য নিবটির নাম।
রাশিই

ওরিয়েন্টেশন ট্রানজিশন অ্যানিমেশনগুলি এর সাথে কাজ করা বন্ধ করে দেয়।
ব্যবহারকারীর 3427013

আমি ইতিমধ্যে এই লোলটিকে উম্মুক্ত করে দিয়েছি ... "উইন্ডো টিউমের পরে উইন্ডোটি তার ফ্রেম সেট করবে, উইন্ডো টিউমার হবে তার ফ্রেমটি সেট করবে, উইন্ডো টিউমের সাথে তার ফ্রেমটি সেট করবে"
ক্রিস অলিনসন

18

নতুন এক্সকোড ১১.১.২০xx এবং সুইফট ৫.১০ xxx এর জন্য, যেখানে লক্ষ্যটি এটি আইওএস ১৩+ এ সেট করেছে।

নতুন প্রকল্প কাঠামোর জন্য, অ্যাপডেলিগেটকে রুটভিউ নিয়ন্ত্রণকারী সম্পর্কে কিছু করতে হবে না।

উইন্ডো (UIWindowScene) শ্রেণি -> 'সিনডেলিগেট' ফাইলটি হ্যান্ডেল করার জন্য একটি নতুন ক্লাস রয়েছে।

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = // Your RootViewController in here
        self.window = window
        window.makeKeyAndVisible()
    }

}

1
অনেক প্রশংসিত।
আজিম তালুকদার

14

এটির কাছে যাওয়ার জন্য এখানে একটি ভাল উপায়। এই উদাহরণটি একটি ন্যাভিগেশন নিয়ন্ত্রককে মূল দেখার নিয়ন্ত্রক হিসাবে রাখে এবং আপনার পছন্দসইটির ভিউ কন্ট্রোলারটিকে এটিকে নেভিগেশন স্ট্যাকের নীচে রেখে দেয়, আপনাকে এটিকে যা প্রয়োজন তা আপনাকে ধাক্কা দেওয়ার জন্য প্রস্তুত।

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
    // mainStoryboard
    let mainStoryboard = UIStoryboard(name: "MainStoryboard", bundle: nil)

    // rootViewController
    let rootViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainViewController") as? UIViewController

    // navigationController
    let navigationController = UINavigationController(rootViewController: rootViewController!)

    navigationController.navigationBarHidden = true // or not, your choice.

    // self.window
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    self.window!.rootViewController = navigationController

    self.window!.makeKeyAndVisible()
}

এই উদাহরণটি কাজ করতে আপনি আপনার প্রধান ভিউ নিয়ন্ত্রকের স্টোরিবোর্ড আইডি হিসাবে "মেইন ভিউকন্ট্রোলার" সেট করবেন এবং এই ক্ষেত্রে স্টোরিবোর্ডের ফাইলের নাম হবে "মেইনস্টিরিবোর্ড.স্টরিবোর্ড"। আমি আমার স্টোরিবোর্ডগুলি এই নামে নামকরণ করেছি কারণ আমার কাছে মেইন.স্টোরিবোর্ড কোনও সঠিক নাম নয়, বিশেষত আপনি যদি কখনও সাবক্লাসে যান।


11

আমি এটি উদ্দেশ্য-সিতে করেছিলাম আশা করি এটি আপনার পক্ষে কার্যকর

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

UIViewController *viewController;

NSUserDefaults *loginUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *check=[loginUserDefaults objectForKey:@"Checklog"];

if ([check isEqualToString:@"login"]) {

    viewController = [storyboard instantiateViewControllerWithIdentifier:@"SWRevealViewController"];
} else {

    viewController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
}


self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];

আপনি স্টোরিবোর্ডে কন্ট্রোলারগুলি কীভাবে ডিজাইন করেছেন lease দয়া করে সহায়তা করুন।
পুনম

ভিউ কন্ট্রোলারগুলি টেনে আনুন এবং পরিচয়ের স্টোরিবোর্ড আইডি সেট করুন: <ভিউকন্ট্রোলারনাম> এবং আপনার ভিউ কন্ট্রোলার অ্যাক্সেস করুন ...
প্যাটেল জিগার

@ প্যাটেলজিগার কীভাবে লগইনভিসি স্থাপন করবেন
উমা মাধবী

এই ইউআইটিববারকন্ট্রোলারের মতো কল ভিউ কন্ট্রোলার * টিবিসি = [সেলফ স্টোরবোর্ড ইনস্ট্যান্টিয়েট ভিউকন্ট্রোলার উইথআইডিটিসিফায়ার: @ "কন্টেন্টভিউ কনট্রোলার"]; [স্ব-উপস্থিত ভিউকন্ট্রোলার: টিবিসি অ্যানিমেটেড: হ্যাঁ সমাপ্তি: শূন্য];
প্যাটেল জিগার

7

সুইফট 4.2 এবং 5 কোডের জন্য কোড:

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     self.window = UIWindow(frame: UIScreen.main.bounds)

     let storyboard = UIStoryboard(name: "Main", bundle: nil)

     let initialViewController = storyboard.instantiateViewController(withIdentifier: "dashboardVC")

     self.window?.rootViewController = initialViewController
     self.window?.makeKeyAndVisible()
}

এবং এর জন্য Xcode 11+ and for Swift 5+:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

     var window: UIWindow?

     func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
         if let windowScene = scene as? UIWindowScene {
             let window = UIWindow(windowScene: windowScene)

              window.rootViewController = // Your RootViewController in here

              self.window = window
              window.makeKeyAndVisible()
         }
    }
}

self.window ত্রুটি দেয় 'অ্যাপডেলিগেট' টাইপের মানটির কোনও সদস্য 'উইন্ডো' নেই, কোনও ধারণা?
জোসেফ আস্ট্রাহান

@ জোসেফআস্ট্রহান এটির আগে এটি পরিবর্তনশীল বলে ঘোষণা করে। যেমন - var window: UIWindow?
জামিল হাসনাইন তামিম

@ জোসেফআস্ট্রাহান আমার উত্তরটি আবার পরীক্ষা করুন। আমি পরিবর্তনশীল যুক্ত করেছি।
জামিল হাসনাইন তামিম

ধন্যবাদ, এটি একটি টন সাহায্য করে!
জোসেফ আস্ট্রাহান

And for Xcode 11+ and for Swift 5+অংশ আমাকে অনেক সাহায্য করে। ধন্যবাদ মানুষ
টরোঙ্গো

6

আমি এক্সকোড 8 এবং দ্রুত 3.0 এ কাজ করেছিলাম আশা করি এটি আপনার পক্ষে কার্যকর হবে এবং এটি পুরোপুরি কার্যকরভাবে কাজ করবে। নিম্নলিখিত কোড ব্যবহার করুন:

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {       
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let initialViewController = storyboard.instantiateViewController(withIdentifier: "ViewController")
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
    return true
}

এবং আপনি যদি নেভিগেশন নিয়ামক ব্যবহার করছেন তবে তার জন্য নিম্নলিখিত কোডটি ব্যবহার করুন:

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let navigationController:UINavigationController = storyboard.instantiateInitialViewController() as! UINavigationController
    let initialViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController")
    navigationController.viewControllers = [initialViewController]
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()      
    return true
}

হাই ... মায়াঙ্ক, আমি এক্সকোড 8 এবং দ্রুত 3.0 এ কাজ করেছিলাম কারণ এই সমাধানটি কাজ করার পরে কোন ত্রুটিটি আসে কারণ এটি কাজ করছে
কুণাল

6

সুইফট 4:

ডিডফিনিশলঞ্চিংউইথঅপশনস () ফাংশনের মধ্যে, AppDelegate.swift এর ভিতরে এই লাইনগুলি যুক্ত করুন ...

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // Setting the Appropriate initialViewController

    // Set the window to the dimensions of the device
    self.window = UIWindow(frame: UIScreen.main.bounds)

    // Grab a reference to whichever storyboard you have the ViewController within
    let storyboard = UIStoryboard(name: "Name of Storyboard", bundle: nil)

    // Grab a reference to the ViewController you want to show 1st.
    let initialViewController = storyboard.instantiateViewController(withIdentifier: "Name of ViewController")

    // Set that ViewController as the rootViewController
    self.window?.rootViewController = initialViewController

    // Sets our window up in front
    self.window?.makeKeyAndVisible()

    return true
}

এখন, উদাহরণস্বরূপ, অনেক সময় আমরা এই জাতীয় কিছু করি যখন আমরা ব্যবহারকারীকে লগইন স্ক্রিনে বা কোনও প্রাথমিক সেটআপ স্ক্রিনেল বা অ্যাপ্লিকেশনটির মূল স্ক্রিনে ফিরে যেতে চাই ইত্যাদি you আপনি যদি এর মতোও কিছু করতে চান তবে , আপনি এই পয়েন্টটি তার জন্য কাঁটাচামচ হিসাবে ব্যবহার করতে পারেন।

চিন্তা করুন. আপনি এনএসউসারডেফাল্টগুলিতে উদাহরণস্বরূপ কোনও ব্যবহারকারী লগডইন বুলিয়ান ধরে রেখেছিলেন এবংif userLoggedIn == false { use this storyboard & initialViewController... } else { use this storyboard & initialViewController... }


এটি 1 টি যুক্ত ভিউ কন্ট্রোলার যুক্ত একটি নতুন প্রকল্পে কাজ করে না। সর্বদা প্রাথমিক দেখার নিয়ামক থেকে শুরু হয়। এক্সকোড 11.2 কোথায় সমস্যা হতে পারে?
ওলেহ এইচ

5

ঠিক আছে উপরের / নীচের সমস্ত উত্তর স্টোরিবোর্ডে প্রবেশের বিন্দু সম্পর্কে সতর্কতা তৈরি করছে।

আপনি 2 (বা তার বেশি) এন্ট্রি দৃশ্য কন্ট্রোলার যে কিছু শর্ত উপর নির্ভর করে আছে চান (বলুন conditionVariable ) তাহলে তুমি কি উচিত হল:

  • আপনার মেইন স্টোরবোর্ডে রুট ভিউকন্ট্রোলার ছাড়াই ইউআইএনএভিগেশন নিয়ন্ত্রণকারী তৈরি করুন , এন্ট্রি পয়েন্ট হিসাবে সেট করুন
  • 2 তৈরি করুন (বা তার বেশি) দৃশ্য কন্ট্রোলার মধ্যে segues "দেখান", তাদের কিছু id হস্তান্তর বলতে id1 এবং id2
  • পরবর্তী কোড ব্যবহার করুন:

    class AppDelegate: UIResponder, UIApplicationDelegate {
    
       var window: UIWindow?
    
       func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
           let navigationController = window!.rootViewController! as! UINavigationController
           navigationController.performSegueWithIdentifier(conditionVariable ? "id1" : "id2")
    
           return true
       }

আশাকরি এটা সাহায্য করবে.


1
"স্টোরিবোর্ডে কোনও এন্ট্রি পয়েন্ট নেই" ত্রুটিটি এমন একটি প্রকল্পের কনফিগারেশনের কারণে যা মুছতে পারে। প্রকল্প> তথ্য> কাস্টম আইওএস লক্ষ্য বৈশিষ্ট্যগুলিতে যান এবং "প্রধান স্টোরিবোর্ড ফাইলের নাম নাম" সম্পত্তি মুছুন। সতর্কতা আর প্রদর্শিত হবে না।
কমলামাখো

5

আপনি যদি স্টোরিবোর্ড ব্যবহার না করেন। আপনি আপনার মূল ভিউ নিয়ন্ত্রকটিকে প্রোগ্রামগতভাবে আরম্ভ করতে পারেন।

সুইফট 4

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    let rootViewController = MainViewController()
    let navigationController = UINavigationController(rootViewController: rootViewController)
    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    return true
}
class MainViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .green
    }
}

এবং এছাড়াও অপসারণ Mainথেকে ডিপ্লোয়মেন্ট তথ্য

এখানে চিত্র বর্ণনা লিখুন


এটি আমার সাথে সুইফট 4.2, এক্সকোড 11.3, আইওএস 9 ~ 13.3.1
কোডার এসিজেএইচপি

4

সুইডট 4-এ সম্পূর্ণ সমাধানটি এখানে ডিনফিনিশলঞ্চিং উইথঅপশনগুলিতে প্রয়োগ করে

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

 let isLogin = UserDefaults.standard.bool(forKey: "Islogin")
    if isLogin{
        self.NextViewController(storybordid: "OtherViewController")


    }else{
        self.NextViewController(storybordid: "LoginViewController")

    }
}

Appdelegate.swift এর ভিতরে যে কোনও জায়গায় এই ফাংশনটি লিখুন

  func NextViewController(storybordid:String)
{

    let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let exampleVC = storyBoard.instantiateViewController(withIdentifier:storybordid )
   // self.present(exampleVC, animated: true)
    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = exampleVC
    self.window?.makeKeyAndVisible()
}

3

আপনি যদি এটিকে ভিউ কন্ট্রোলারে করতে চান এবং অ্যাপের প্রতিনিধি হিসাবে না চান: আপনার ভিউ কন্ট্রোলারে অ্যাপডেলিগেটের জন্য কেবলমাত্র রেফারেন্সটি আনুন এবং এটি এর উইন্ডো অবজেক্টটিকে ডানদিকের নিয়ন্ত্রকের সাথে পুনরায় সেট করুন কারণ এটি রুটভিউ নিয়ন্ত্রণকারী।

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let yourVC = mainStoryboard.instantiateViewControllerWithIdentifier("YOUR_VC_IDENTIFIER") as! YourViewController
appDelegate.window?.rootViewController = yourVC
appDelegate.window?.makeKeyAndVisible()

3

জন্য দ্রুতগতি 4.0

আপনার AppDelegate.swift ফাইল didfinishedlaunchingWithOptions পদ্ধতি, নিম্নলিখিত কোড করা।

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()

    let rootVC = MainViewController() // your custom viewController. You can instantiate using nib too. UIViewController(nib name, bundle)
    //let rootVC = UIViewController(nibName: "MainViewController", bundle: nil) //or MainViewController()
    let navController = UINavigationController(rootViewController: rootVC) // Integrate navigation controller programmatically if you want

    window?.rootViewController = navController

    return true
}

আশা করি এটি ঠিকঠাক কাজ করবে।


3
: (UIScreen.main.bounds ফ্রেম নয়) কাজ ..If আপনি stroyboard প্রারম্ভিক viewController সেট havent তারপর আপনি উইন্ডো = UIWindow যোগ আছে
পুনিত

3

সুইফ্ট 5 এবং এক্সকোড 11

সুতরাং এক্সকোড 11 এ উইন্ডো সমাধানটি অ্যাপ্লিকেশনটির আর বৈধ নয় valid তারা এটিকে সিনডেলগেটে নিয়ে গেছে। আপনি এটি সিনডেলগেট.সুইফ্ট ফাইলটিতে খুঁজে পেতে পারেন।

আপনি এখন এটি var window: UIWindow?উপস্থিত আছে লক্ষ্য করবেন ।

আমার পরিস্থিতিতে আমি স্টোরিবোর্ড থেকে একটি ট্যাববারকন্ট্রোলার ব্যবহার করছিলাম এবং এটিকে রুট ভিউকন্ট্রোলার হিসাবে সেট করতে চেয়েছিলাম।

এটি আমার কোড:

sceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).

        self.window = self.window ?? UIWindow()//@JA- If this scene's self.window is nil then set a new UIWindow object to it.

        //@Grab the storyboard and ensure that the tab bar controller is reinstantiated with the details below.
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabBarController = storyboard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController

        for child in tabBarController.viewControllers ?? [] {
            if let top = child as? StateControllerProtocol {
                print("State Controller Passed To:")
                print(child.title!)
                top.setState(state: stateController)
            }
        }

        self.window!.rootViewController = tabBarController //Set the rootViewController to our modified version with the StateController instances
        self.window!.makeKeyAndVisible()

        print("Finished scene setting code")
        guard let _ = (scene as? UIWindowScene) else { return }
    }

আমি যেমন এখানে করেছি ঠিক তেমন দৃশ্যের পদ্ধতিতে এটি যুক্ত করার বিষয়টি নিশ্চিত করুন। নোট করুন যে স্টোরিবোর্ডে আপনি যে ট্যাব বারকন্ট্রোলার বা ভিউকন্ট্রোলার ব্যবহার করছেন তার জন্য আপনাকে সনাক্তকারী নাম সেট করতে হবে ।

কীভাবে স্টোরিবোর্ড আইডি সেট করবেন

আমার ক্ষেত্রে আমি ট্যাব দর্শনগুলির মধ্যে ভাগ করে নেওয়া ভেরিয়েবলগুলির উপর নজর রাখতে একটি স্টেট কন্ট্রোলার সেট করার জন্য এটি করছিলাম। আপনি যদি এই একই জিনিসটি করতে চান তবে নীচের কোডটি যুক্ত করুন ...

StateController.swift

import Foundation

struct tdfvars{
    var rbe:Double = 1.4
    var t1half:Double = 1.5
    var alphaBetaLate:Double = 3.0
    var alphaBetaAcute:Double = 10.0
    var totalDose:Double = 6000.00
    var dosePerFraction:Double = 200.0
    var numOfFractions:Double = 30
    var totalTime:Double = 168
    var ldrDose:Double = 8500.0
}

//@JA - Protocol that view controllers should have that defines that it should have a function to setState
protocol StateControllerProtocol {
  func setState(state: StateController)
}

class StateController {
    var tdfvariables:tdfvars = tdfvars()
}

দ্রষ্টব্য: কেবল নিজের ভেরিয়েবলগুলি ব্যবহার করুন বা পরিবর্তে যা কিছু আপনি ট্র্যাক রাখার চেষ্টা করছেন তা ব্যবহার করুন, আমি কেবলমাত্র খনিটিকে tdfvariables কাঠামোর একটি উদাহরণ হিসাবে তালিকাভুক্ত করেছি।

ট্যাবকন্ট্রোলারের প্রতিটি দৃশ্যে নিম্নলিখিত সদস্যের পরিবর্তনশীল যুক্ত করুন।

    class SettingsViewController: UIViewController {
    var stateController: StateController?
.... }

তারপরে সেই একই ফাইলগুলিতে নিম্নলিখিতগুলি যুক্ত করুন:

extension SettingsViewController: StateControllerProtocol {
  func setState(state: StateController) {
    self.stateController = state
  }
}

এটি যা করে তা আপনাকে ভিউগুলের মধ্যে ভেরিয়েবলগুলি পাস করার একক পদ্ধতিতে এড়াতে দেয় । এটি নির্ভরতা ইনজেকশন মডেলের জন্য সহজেই মঞ্জুরি দেয় যা দীর্ঘতর রান হয় তবে সিঙ্গলটন পদ্ধতির better


3

অক্ষম Main.storyboard

General -> Deployment Info -> Main Interface -> remove `Main` 
Info.plist -> remove Key/Value for `UISceneStoryboardFile` and  `UIMainStoryboardFile`

স্টোরিবোর্ড আইডি যুক্ত করুন

Main.storyboard -> Select View Controller -> Inspectors -> Identity inspector -> Storyboard ID -> e.g. customVCStoryboardId

সুইফ্ট 5 এবং এক্সকোড 11

প্রসারিত করা UIWindow

class CustomWindow : UIWindow {
    //...
}

এক্সকোড দ্বারা সম্পাদিত সম্পাদনা SceneDelegate.swift

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: CustomWindow!

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        guard let windowScene = (scene as? UIWindowScene) else { return }

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = storyboard.instantiateViewController(withIdentifier: "customVCStoryboardId")

        window = CustomWindow(windowScene: windowScene)
        window.rootViewController = initialViewController
        window.makeKeyAndVisible()
    }

    //...
}

প্রাথমিক দৃশ্য নিয়ামক window.rootViewController = UIStoryboard (: "প্রধান", বান্ডিল: নাম শূন্য) রুট নিয়ামক সেট করতে পারেন .instantiateInitialViewController ()
কামরান খান

1
I worked out a solution on Xcode 6.4 in swift. 

// I saved the credentials on a click event to phone memory

    @IBAction func gotobidderpage(sender: AnyObject) {
 if (usernamestring == "bidder" && passwordstring == "day303")
        {
            rolltype = "1"

NSUserDefaults.standardUserDefaults().setObject(usernamestring, forKey: "username")
NSUserDefaults.standardUserDefaults().setObject(passwordstring, forKey: "password")
NSUserDefaults.standardUserDefaults().setObject(rolltype, forKey: "roll")


            self.performSegueWithIdentifier("seguetobidderpage", sender: self)
}


// Retained saved credentials in app delegate.swift and performed navigation after condition check


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

let usernamestring = NSUserDefaults.standardUserDefaults().stringForKey("username")
let passwordstring = NSUserDefaults.standardUserDefaults().stringForKey("password")
let rolltypestring = NSUserDefaults.standardUserDefaults().stringForKey("roll")

        if (usernamestring == "bidder" && passwordstring == "day303" && rolltypestring == "1")
        {

            // Access the storyboard and fetch an instance of the view controller
            var storyboard = UIStoryboard(name: "Main", bundle: nil)
            var viewController: BidderPage = storyboard.instantiateViewControllerWithIdentifier("bidderpageID") as! BidderPage

            // Then push that view controller onto the navigation stack
            var rootViewController = self.window!.rootViewController as! UINavigationController
            rootViewController.pushViewController(viewController, animated: true)
        }

        // Override point for customization after application launch.
        return true
    }



Hope it helps !

1
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    var exampleViewController: ExampleViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ExampleController") as! ExampleViewController

    self.window?.rootViewController = exampleViewController

    self.window?.makeKeyAndVisible()

    return true
}

1

অ্যাপের প্রতিনিধি থেকে এসডাব্লুওয়ালভিউকন্ট্রোলার দিয়ে একটি ভিউকন্ট্রোলার খুলুন।

 self.window = UIWindow(frame: UIScreen.main.bounds)
 let storyboard = UIStoryboard(name: "StoryboardName", bundle: nil)
 let swrevealviewcontroller:SWRevealViewController = storyboard.instantiateInitialViewController() as! SWRevealViewController 
 self.window?.rootViewController = swrevealviewcontroller
 self.window?.makeKeyAndVisible()

0

সুইফ্ট 5+ এর জন্য


var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            let submodules = (
                home: HomeRouter.createModule(),
                search: SearchRouter.createModule(),
                exoplanets: ExoplanetsRouter.createModule()
            )
            
            let tabBarController = TabBarModuleBuilder.build(usingSubmodules: submodules)
            
            window.rootViewController = tabBarController
            self.window = window
            window.makeKeyAndVisible()
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.