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


252

আমি কীভাবে প্রোগ্রামিয়ালি InitialViewControllerস্টোরিবোর্ডের জন্য সেট করব ? আমি আমার স্টোরিবোর্ডটি কিছু শর্তের উপর নির্ভর করে আলাদাভাবে দেখতে চাই যা লঞ্চ থেকে শুরু করে পরিবর্তিত হতে পারে।


1
সেটিংসে প্রধান স্টোরিবোর্ডটি সাফ না করে সতর্কতা ছাড়াই এই উত্তরটি পরীক্ষা করে দেখুন ।
বোরঝ

উত্তর:


466

একটি ডামি প্রাথমিক ভিউ কন্ট্রোলার ছাড়া কীভাবে

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

স্টোরিবোর্ডে, প্রথম ভিউ কন্ট্রোলার থেকে "ইস ইনিশিয়ান ভিউ কন্ট্রোলার" অ্যাট্রিবিউটটি চেক করুন।

আপনি যদি এই মুহূর্তে আপনার অ্যাপ্লিকেশন চালান তবে আপনি পড়বেন:

Failed to instantiate the default view controller for UIMainStoryboardFile 'MainStoryboard' - perhaps the designated entry point is not set?

এবং আপনি লক্ষ্য করবেন যে অ্যাপের প্রতিনিধিটিতে আপনার উইন্ডো সম্পত্তি এখন শূন্য।

অ্যাপ্লিকেশনটির সেটিংয়ে আপনার লক্ষ্য এবং Infoট্যাবে যান। এর মান পরিষ্কার করুন Main storyboard file base name। উপর Generalট্যাব, মান পরিষ্কার Main Interface। এটি সতর্কতা অপসারণ করবে।

অ্যাপের প্রতিনিধিটির application:didFinishLaunchingWithOptions:পদ্ধতিতে উইন্ডো এবং পছন্দসই প্রাথমিক ভিউ কন্ট্রোলার তৈরি করুন :

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

7
ভালবাসা! ভালবাসা! ভালবাসা! আইওএস 6 এবং আইওএস 7 এর জন্য দুটি সম্পূর্ণ ভিন্ন ভিউ কন্ট্রোলার গাছের মধ্যে স্যুইচ করতে আমি এটি ব্যবহার করব। IOS7- এ সমস্ত ঘণ্টা এবং হুইসেল ব্যবহার করার সময় পিছনের দিকের সামঞ্জস্যতা হ্যান্ডেল করার সর্বোত্তম উপায় বলে মনে হয়।
হুঙ্কপাপা

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

1
didFinishLaunchingWithOptionsঅ্যাপটি নতুন প্রক্রিয়াতে শুরু করা হলে @bdv বলা হয়। আপনি যদি হোম স্ক্রিনে যান এবং অ্যাপ্লিকেশনটিতে ফিরে যান তবে এই পদ্ধতিটি আবার চালু করা হবে না। (মেমরির প্রতিবন্ধকতার কারণে আইওএসের অবসান না হলে) অ্যাপটি বন্ধ করার চেষ্টা করুন এবং আপনার আইডিই থেকে আবার চালু করুন। যদি সমস্যাটি অব্যাহত থাকে, সমস্যাটি এসও-তে পোস্ট করুন এবং আমি সাহায্য করে খুশি হব বন্ধু।
ট্র্যাভিস

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

2
@ রাঘব, এখানে সুইফট কোডটি রয়েছে:self.window = UIWindow(frame: UIScreen.mainScreen().bounds) var storyboard = UIStoryboard(name: "Main", bundle: nil) var viewController: UIViewController = // self.window!.rootViewController = viewController self.window!.makeKeyAndVisible()
এমজমায়াঙ্ক

121

সব জন্য সুইফট সেখানে আউট প্রেমীদের, এখানে দ্বারা উত্তর @Travis অনুদিত স্যুইফ্ট :

@ ট্র্যাভিস যা উদ্দেশ্য সি কোডের আগে ব্যাখ্যা করেছেন তা করুন Do তারপর,

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
}

ExampleViewControllerনতুন প্রাথমিক দৃশ্য নিয়ামক আপনাকে দেখাতে চাই হবে।

পদক্ষেপগুলি ব্যাখ্যা করা হয়েছে:

  1. বর্তমান উইন্ডোর আকারের সাথে একটি নতুন উইন্ডো তৈরি করুন এবং এটি আমাদের প্রধান উইন্ডো হিসাবে সেট করুন
  2. একটি স্টোরিবোর্ড ইনস্ট্যান্ট করুন যা আমরা আমাদের নতুন প্রাথমিক ভিউ কন্ট্রোলার তৈরি করতে ব্যবহার করতে পারি
  3. এটির স্টোরিবোর্ড আইডির উপর ভিত্তি করে আমাদের নতুন প্রাথমিক দৃশ্য নিয়ামক ইনস্ট্যান্ট করুন
  4. আমরা সদ্য চালু করা নতুন নতুন নিয়ামক হিসাবে আমাদের নতুন উইন্ডোটির রুট ভিউ নিয়ন্ত্রণকারীকে সেট করুন
  5. আমাদের নতুন উইন্ডো দৃশ্যমান করুন

উপভোগ করুন এবং খুশি প্রোগ্রামিং!


আমি @ ট্র্যাভিসকে এই সংস্করণটির জন্য জিজ্ঞাসা করেছি, এবং ... যাই হোক ধন্যবাদ.
dellos

স্টোরিবোর্ড আইডি পরিচয় পরিদর্শক ফলকটিতে পরিচয় বিভাগের অধীনে রয়েছে
ডমিনিক

2
স্টোরিবোর্ড আইডির প্রয়োজন নেই এমন একটি টিপটি হল স্টোরিবোর্ডে স্পষ্টভাবে প্রাথমিক ভিউ কন্ট্রোলার (রুটভিউ কনট্রোলার) সেট করা এবং উপরের প্রস্তাবিত ইউআইএসটিবোর্ড.ইনটিয়ালভিউকন্ট্রোলার () এর পরিবর্তে কন্ট্রোলার পেতে UIStoryboard.instantiateInitialViewController () ব্যবহার করুন। বাকিগুলিও একই রকম।
এরিক বোমেন্ডিল

45

আপনি প্রোগ্রামটিমে কী উইন্ডোটির রুটভিউ নিয়ন্ত্রণকারী সেট করতে পারেন program (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions

উদাহরণ স্বরূপ:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (shouldShowAnotherViewControllerAsRoot) {
        UIStoryboard *storyboard = self.window.rootViewController.storyboard;
        UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"rootNavigationController"];
        self.window.rootViewController = rootViewController;
        [self.window makeKeyAndVisible];
    }

    return YES;
}

তারপরে কীভাবে মাধ্যমিক ইউআইভিউউকন্ট্রোলার থেকে আসল প্রবেশপথটি শুরু করবেন?
অকসিও

@ooxio: আপনি আসল এন্টিপয়েন্টটি একটি বিশ্বব্যাপী জায়গায় সংরক্ষণ করতে পারেন তারপরে এটি পরে ব্যবহার করুন।
চেঞ্জিয়ং

আপনি যদি লগইন / রেজিস্ট্রেশন বা এরকম কোনও কিছুতে ইনস্ট্যান্ট করতে চান তবে এটি সত্যিই দরকারী ...
হানি

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

নোট করুন যে প্রতিস্থাপিত, স্টোরিবোর্ড-নির্ধারিত প্রাথমিক ভিউ কন্ট্রোলার এখনও তাত্ক্ষণিকভাবে আসবে এবং init()/ deinit()চক্রের মধ্য দিয়ে যাবে , তবে নির্বাহ viewDidLoad()বা সঠিকভাবে আরম্ভ না করে IBOutlet-s। আপনার কোডটি এর জন্য প্রস্তুত কিনা তা নিশ্চিত করুন।
গ্যারি

14

সুইফট 3: @ ভিক্টর-সিগলারের কোডে আপডেট

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

    // Assuming your storyboard is named "Main"
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

    // Add code here (e.g. if/else) to determine which view controller class (chooseViewControllerA or chooseViewControllerB) and storyboard ID (chooseStoryboardA or chooseStoryboardB) to send the user to

    if(condition){
        let initialViewController: chooseViewControllerA = mainStoryboard.instantiateViewController(withIdentifier: "chooseStoryboardA") as! chooseViewControllerA
        self.window?.rootViewController = initialViewController
    )
    }else{
        let initialViewController: chooseViewControllerB = mainStoryboard.instantiateViewController(withIdentifier: "chooseStoryboardB") as! chooseViewControllerB
        self.window?.rootViewController = initialViewController
    )

    self.window?.makeKeyAndVisible(

    return true
}

আপনাকে ধন্যবাদ, এমইকে এছাড়াও, আপনি বন্ধনীগুলি সহ বন্ধনীগুলি পরিবর্তন করে শর্তাধীন সমাপ্ত বিবৃতিগুলির বাক্য গঠনটি সংশোধন করতে চাইতে পারেন।
নেটিভ_মোবাইল_আর্চ_দেব

9

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

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

UIViewController viewController = (HomeController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"HomeController"];

UINavigationController navController = [[UINavigationController alloc] initWithRootViewController:viewController];

 self.window.rootViewController = navController;

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {

    // do stuff for iOS 7 and newer

    navController.navigationBar.barTintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];

    navController.navigationItem.leftBarButtonItem.tintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];

    navController.navigationBar.tintColor = [UIColor whiteColor];

    navController.navigationItem.titleView.tintColor = [UIColor whiteColor];

    NSDictionary *titleAttributes =@{

                                     NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],

                                     NSForegroundColorAttributeName : [UIColor whiteColor]

                                     };

    navController.navigationBar.titleTextAttributes = titleAttributes;

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

}

else {

    // do stuff for older versions than iOS 7

    navController.navigationBar.tintColor = [UIColor colorWithRed:88/255.0 green:164/255.0 blue:73/255.0 alpha:1.0];



    navController.navigationItem.titleView.tintColor = [UIColor whiteColor];

}

[self.window makeKeyAndVisible];

স্টোরিবোর্ডসিগ ব্যবহারকারীদের জন্য

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

// Go to Login Screen of story board with Identifier name : LoginViewController_Identifier

LoginViewController *loginViewController = (LoginViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@“LoginViewController_Identifier”];

navigationController = [[UINavigationController alloc] initWithRootViewController:testViewController];

self.window.rootViewController = navigationController;

[self.window makeKeyAndVisible];

// Go To Main screen if you are already Logged In Just check your saving credential here

if([SavedpreferenceForLogin] > 0){
    [loginViewController performSegueWithIdentifier:@"mainview_action" sender:nil];
}

ধন্যবাদ


6

মেনস্টোরিবোর্ডটি খুলুন, আপনি যে ভিউটি শুরু করতে চান তা নির্বাচন করুন, তারপরে ইউটিলিটিস -> বৈশিষ্ট্য খুলুন। "ভিউ কন্ট্রোলার" এর নীচে আপনি "ইসি ইনিশিয়াল ভিউ কন্ট্রোলার" রেডিও বোতামটি দেখেন। শুধু এটি নির্বাচন করুন।

--- সংশোধিত প্রশ্নের কাছে:

আপনি এটি চেষ্টা করে দেখতে পারেন: আপনার ইনটেনিটাল ভিউয়ের ViewDidLoad বিভাগে একটি পদ্ধতি লিখুন এবং যখন পদ্ধতিটি অ্যাপ্লিকেশন লঞ্চে চালিত হয়, তখন পদ্ধতিটি অন্য দৃশ্যে সেগটিকে ট্রিগার করে।


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

আপনার এটির চেষ্টা করা উচিত: অ্যাপডেলিগেট.এম ফাইলের একটি উপযুক্ত পদ্ধতিতে আপনার শর্ত অনুযায়ী একটি সেগু কোড যুক্ত করুন। উদাহরণস্বরূপ, আপনি "অ্যাপ্লিকেশনডিডবেকোম্যাকটিভ:" পদ্ধতিতে একটি সেগু কোড যুক্ত করতে পারেন।
m.etka

@ জগদেব আপনি ভিউডিডলয়েডের পরিবর্তে ভিউডিড অ্যাপায় লিখেছেন।
উমায়ের খান যাদুন

এই পদ্ধতির সমস্যা হ'ল প্রাথমিক ভিউ কন্ট্রোলার প্রদর্শিত হয় যা কিছু সময়ের জন্য দৃশ্যমান হয়ে যায় এবং তারপরে অন্যটিতে স্যুইচ করে যা ইউএক্স দৃষ্টিকোণ থেকে ভাল নয় তাই ভাল সমাধান নয়।
ধরণকর

3

সুইফট 5

আপনার যদি স্টোরিবোর্ডে প্রাথমিক ভিউ কন্ট্রোলার হিসাবে কোনও ভিউকন্ট্রোলার সেট করা না থাকে তবে আপনার 2 টি কাজ করা দরকার:

  1. আপনার প্রকল্পের টার্গেটে যান, আপনার প্রকল্পটি নির্বাচন করুন -> সাধারণ -> প্রধান ইন্টারফেস ক্ষেত্র সাফ করুন।
  2. প্রকল্পের সবসময় টার্গেটের অভ্যন্তরে, এখন তথ্য যান -> অ্যাপ্লিকেশন দৃশ্য ম্যানিফেস্ট -> দৃশ্য কনফিগারেশন -> অ্যাপ্লিকেশন সেশন ভূমিকা -> আইটেম 0 (ডিফল্ট কনফিগারেশন) -> স্টোরিবোর্ডের নাম ক্ষেত্রটি মুছুন।

অবশেষে, আপনি এখন সিনডেলিগেটে আপনার কোড যুক্ত করতে পারেন:

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).
    guard let windowScene = (scene as? UIWindowScene) else { return }

    window = UIWindow(windowScene: windowScene)


    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    // Make sure you set an Storyboard ID for the view controller you want to instantiate
    window?.rootViewController = storyboard.instantiateViewController(withIdentifier: identifier)
    window?.makeKeyAndVisible()

}

এটি অবশ্যই Xcode 11.5 হিসাবে সর্বাধিক বর্তমান উত্তর Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not setএবং কোডটি আমার প্রাথমিক ভিসি ইনস্ট্যান্ট করার সিদ্ধান্ত নেওয়ার পরে আমার যে সতর্কতা ছিল তা স্থির করে ফেলেছিল। একটি গুরুত্বপূর্ণ পয়েন্ট, যখন @ আরএস 7 "স্টোরিবোর্ডের নাম ফিল্ডটি মুছুন" বলে, তখন তারা কেবল ক্ষেত্রের সামগ্রীই নয়, প্লিস্টের পুরো সারিটি বোঝায়।
সিডিএফ 1982

2

আমি মনে করি না এটি সম্ভব। পরিবর্তে আপনার কাছে একটি প্রাথমিক কন্ট্রোলার থাকতে পারে যাতে বিভিন্ন ভিউ কন্ট্রোলারদের জন্য পৃথক পৃথক বৈশিষ্ট্য থাকতে পারে। প্রারম্ভকালে, আপনি সিদ্ধান্ত নিতে পারেন কোন সেগুটি প্রোগ্রামগতভাবে সম্পাদন করবেন।


2

আপনি initial view controllerইন্টারফেস বিল্ডারের পাশাপাশি প্রোগ্রামগতভাবেও সেট করতে পারেন ।

নীচে প্রোগ্রামের জন্য ব্যবহার করা হয়।

উদ্দেশ্য গ :

        self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id>

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

        return YES;

সুইফট:

        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController

        self.window?.rootViewController = objMainViewController

        self.window?.makeKeyAndVisible()

        return true

2

গতিশীল নেভিগেশন পরিচালনা করতে এবং অ্যাপ্লিকেশন ক্লাস পরিষ্কার রাখতে আমি একটি রাউটিং ক্লাস তৈরি করেছি, আমি আশা করি এটি অন্যকেও সহায়তা করবে।

//
//  Routing.swift
// 
//
//  Created by Varun Naharia on 02/02/17.
//  Copyright © 2017 TechNaharia. All rights reserved.
//

import Foundation
import UIKit
import CoreLocation

class Routing {

    class func decideInitialViewController(window:UIWindow){
        let userDefaults = UserDefaults.standard
        if((Routing.getUserDefault("isFirstRun")) == nil)
        {
            Routing.setAnimatedAsInitialViewContoller(window: window)
        }
        else if((userDefaults.object(forKey: "User")) != nil)
        {
            Routing.setHomeAsInitialViewContoller(window: window)
        }
        else
        {
            Routing.setLoginAsInitialViewContoller(window: window)
        }

    }

    class func setAnimatedAsInitialViewContoller(window:UIWindow) {
        Routing.setUserDefault("Yes", KeyToSave: "isFirstRun")
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let animatedViewController: AnimatedViewController = mainStoryboard.instantiateViewController(withIdentifier: "AnimatedViewController") as! AnimatedViewController

        window.rootViewController = animatedViewController
        window.makeKeyAndVisible()
    }

    class func setHomeAsInitialViewContoller(window:UIWindow) {
        let userDefaults = UserDefaults.standard
        let decoded  = userDefaults.object(forKey: "User") as! Data
        User.currentUser = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! User

        if(User.currentUser.userId != nil && User.currentUser.userId != "")
        {
            let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let homeViewController: HomeViewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
            let loginViewController: UINavigationController = mainStoryboard.instantiateViewController(withIdentifier: "LoginNavigationViewController") as! UINavigationController
            loginViewController.viewControllers.append(homeViewController)
            window.rootViewController = loginViewController
        }
        window.makeKeyAndVisible()
    }

    class func setLoginAsInitialViewContoller(window:UIWindow) {
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let loginViewController: UINavigationController = mainStoryboard.instantiateViewController(withIdentifier: "LoginNavigationViewController") as! UINavigationController

        window.rootViewController = loginViewController
        window.makeKeyAndVisible()
    }

  class func setUserDefault(_ ObjectToSave : Any?  , KeyToSave : String)
    {
        let defaults = UserDefaults.standard

        if (ObjectToSave != nil)
        {

            defaults.set(ObjectToSave, forKey: KeyToSave)
        }

        UserDefaults.standard.synchronize()
    }

    class func getUserDefault(_ KeyToReturnValye : String) -> Any?
    {
        let defaults = UserDefaults.standard

        if let name = defaults.value(forKey: KeyToReturnValye)
        {
            return name as Any
        }
        return nil
    }

    class func removetUserDefault(_ KeyToRemove : String)
    {
        let defaults = UserDefaults.standard
        defaults.removeObject(forKey: KeyToRemove)
        UserDefaults.standard.synchronize()
    }

}

এবং আপনার AppDelegate এ কল করুন

 self.window = UIWindow(frame: UIScreen.main.bounds)
 Routing.decideInitialViewController(window: self.window!)

2

ফোর্স কাস্টিং এড়ানো সহ সুইফট 3 এবং সুইফট 4 ব্যবহারের সাথে আরও একটি সমাধান এরকম

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

এবং নীচে সাথে ব্যবহার করা হয় UINavigationController

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

2

ইন AppDelegate.swiftআপনাকে নিম্নলিখিত কোড যোগ করতে পারেন:

let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "YourViewController_StorboardID")
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()

অবশ্যই, আপনার যুক্তিটি কার্যকর করতে হবে, কোন মানদণ্ডের ভিত্তিতে আপনি একটি উপযুক্ত দর্শন নিয়ামক চয়ন করবেন।

এছাড়াও, একটি পরিচয় যোগ করতে ভুলবেন না (স্টোরিবোর্ড নির্বাচন করুন -> কন্ট্রোলার দৃশ্যের -> পরিচয় পরিদর্শক দেখান -> স্টোরবোর্ড আইডিকে নির্ধারণ করুন)।


1

আইওএস 13 এবং দৃশ্যের প্রতিনিধিদের জন্য উত্তর আপডেট হয়েছে:

আপনার তথ্য.পালিস্ট ফাইলটিতে নিশ্চিত হয়ে নিন আপনি অ্যাপ্লিকেশন সিন ম্যানিফেস্ট -> দৃশ্য কনফিগারেশন -> অ্যাপ্লিকেশন সেশন রোল -> আইটেম 0 এবং সেখানে মূল স্টোরিবোর্ডের রেফারেন্সটি মুছুন delete অন্যথায় আপনি স্টোরিবোর্ড থেকে ইনস্ট্যান্ট করতে ব্যর্থ হওয়া সম্পর্কে একই সতর্কতা পাবেন।

এছাড়াও, অ্যাপের প্রতিনিধি থেকে কোডটি দৃশ্যের প্রতিনিধি পদ্ধতির দৃশ্যে স্থানান্তর করুন (_: উইলকনেক্টটো: বিকল্পসমূহ :), যেহেতু এখনই জীবনচক্রের ইভেন্টগুলি পরিচালনা করা হয়।


0

কিছুদিন আগেও আমি একই পরিস্থিতির মুখোমুখি হয়েছি। একটি খুব সাধারণ কৌশল এই সমস্যার সমাধান করে। আমি লঞ্চ 2 এর আগে আমার প্রাথমিক ভিউ কন্ট্রোলারটিকে লুকিয়ে রেখেছি। প্রাথমিক ভিউ কন্ট্রোলার যদি ডান কন্ট্রোলার হয় তবে এটি ভিডিডলডে দৃশ্যমান হবে। অন্যথায়, একটি সেগু কাঙ্ক্ষিত দর্শন নিয়ন্ত্রকের কাছে সম্পাদিত হয়। এটি আইওএস 6.1 এবং উপরের ক্ষেত্রে পুরোপুরি কাজ করে। আমি নিশ্চিত এটি iOS এর পূর্ববর্তী সংস্করণগুলিতে কাজ করে।


0

ধন্যবাদ অ্যাপডিলেজেটে নিম্নলিখিত হিসাবে এটি পরিবর্তিত হয়েছে:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) ->     Bool {
//Some code to check value of pins

if pins! == "Verified"{
        print(pins)
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "HomePage", bundle: nil)
        let exampleViewController: UINavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("SBHP") as! UINavigationController

        self.window?.rootViewController = exampleViewController

        self.window?.makeKeyAndVisible()
    }else{
        print(pins)
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let exampleViewController: UINavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("SBUser") as! UINavigationController

        self.window?.rootViewController = exampleViewController

        self.window?.makeKeyAndVisible()
    }

0

সহজ সমাধান খুঁজে পেয়েছে - স্টোরিবোর্ড থেকে "প্রাথমিক ভিউ কন্ট্রোলার চেক" অপসারণ করার প্রয়োজন নেই এবং প্রকল্পের তথ্য ট্যাব সম্পাদনা করুন এবং makeKeyAndVisibleকেবল স্থান দিন

self.window.rootViewController = rootVC;

ভিতরে

- (BOOL) application:didFinishLaunchingWithOptions:

কিন্তু আপনি এখনও rootVCথেকে পেয়েছেন instantiateViewControllerWithIdentifier, সঠিক?
thomers

0
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewController(withIdentifier: "storyBoardid") as! ViewController
let navigationController = UINavigationController(rootViewController: vc)
UIApplication.shared.delegate.window?.rootViewController = navigationController

আর একটি উপায় হল ভিউ কন্ট্রোলার উপস্থাপন করা,

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewController(withIdentifier: "storyBoardid") as! ViewController
self.present(vc,animated:true,completion:nil)

প্রথমে আপনাকে আপনার স্টোরিবোর্ডের অবজেক্ট তৈরি করতে হবে এবং তারপরে রুট পরিবর্তন করতে হবে (যদি প্রয়োজন হয়) তারপরে আপনি নির্দিষ্ট ভিউ কন্ট্রোলারের রেফারেন্স নেন যা বর্তমান ভিউ কন্ট্রোলারকে ধাক্কা দেয় (যদি আপনি রুট পরিবর্তন করেন) অন্যথায় এটি কেবল নতুন ভিউ কন্ট্রোলার উপস্থাপন করে যা আপনি হতে পারেন


@ ভিডি পুরোহিত, আরও বোঝার জন্য আপনি নিজের উত্তর সম্পর্কে আরও বর্ণনা করতে পারেন
প্রাগ

0

সুইফট 4, এক্সকোড 9

AppDelegate.swift ফাইলটিতে

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let firstVC = storyboard.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController
    self.window?.rootViewController = firstVC
}

0
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        if (PreferenceHelper.getAccessToken() != "") {
            let initialViewController = storyboard.instantiateViewController(withIdentifier: "your View Controller Identifier")
            self.window?.rootViewController = initialViewController
        } else {
            let initialViewController = storyboard.instantiateViewController(withIdentifier: "your View Controller identifier")
            self.window?.rootViewController = initialViewController
        }
        self.window?.makeKeyAndVisible()
        return true
    }

/*
use your view Controller identifier must use it doubles quotes**strong text**

নিসুর ডিফল্ট মান পছন্দসমূহ মান পরীক্ষা করা অন্তরঙ্গ নিয়ন্ত্রক সমস্যা
চার্লস

0

সুইফট 5 বা ততোধিক # এই সাধারণ কোড দিয়ে রুট ভিউ নিয়ন্ত্রণকারী করুন। আপনি Xcode 11 বা প্রথম ইনিশিয়ালাইজ উপরে ব্যবহার করে থাকেন var window: UIWindow?AppDelegate মধ্যে

let rootVC = mainStoryboard.instantiateViewController(withIdentifier: "YOURCONTROLLER") as! YOURCONTROLLER

        navigationController.setNavigationBarHidden(true, animated: true)
        UIApplication.shared.windows.first?.rootViewController = UINavigationController.init(rootViewController: rootVC)
        UIApplication.shared.windows.first?.makeKeyAndVisible()

0

আপনি যদি অ্যাপ্লিকেশনডফিনিশ পরিবর্তন না করতে পছন্দ করেন তবে আপনি নিম্নলিখিত কৌশলটি করতে পারেন:

প্রাথমিক দর্শন নিয়ন্ত্রক হিসাবে নেভিগেশন নিয়ন্ত্রক সেট করুন এবং এটিকে একটি কাস্টম শ্রেণি 'মাইনাভিগেশন কন্ট্রোলার' বরাদ্দ করুন। তারপরে আপনি ভিডডিডোডের সময় এর রুট ভিউ কন্ট্রোলারটিকে টুইঙ্ক করতে পারেন - এটি আপনার স্টোরিবোর্ডে সেট করা রুট ভিউ নিয়ন্ত্রণকারীটিকে ওভাররাইড করবে।

class MyNavigationController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()
        if !isLoggedIn() {
            viewControllers = [R.storyboard.authentication.loginView()!]
        }
    }

    private func isLoggedIn() -> Bool {
        return false
    }

}

-3

আপনি প্রথমে যে ভিউ কন্ট্রোলারটি খুলতে চান তা নির্বাচন করুন এবং গুণাবলী পরিদর্শকের কাছে যান। প্রাথমিক দৃশ্যে যান এবং চেক করুন প্রাথমিক দেখুন নিয়ামক বিকল্প।

এখন এটি আপনার প্রাথমিক ভিউ কন্ট্রোলার হবে যা অ্যাপ্লিকেশন লঞ্চ করার পরে প্রথমে খুলবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.