Sw নেভিগেশনভিউ `একটি` নেভিগেশনভিউ`-এর ভিতরে `নেভিগেশনলিঙ্ক` রাখার পরে পিছনে নেভিগেট করার সময় আমার সুইফটআইআই অ্যাপটি কেন ক্রাশ হয়?


47

সর্বনিম্ন পুনরুত্পাদনযোগ্য উদাহরণ (এক্সকোড 11.2 বিটা, এটি এক্সকোড 11.1 এ কাজ করে):

struct Parent: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationBarItems(
                    trailing: NavigationLink(destination: Child(), label: { Text("Next") })
                )
        }
    }
}

struct Child: View {
    @Environment(\.presentationMode) var presentation
    var body: some View {
        Text("Hello, World!")
            .navigationBarItems(
                leading: Button(
                    action: {
                        self.presentation.wrappedValue.dismiss()
                    },
                    label: { Text("Back") }
                )
            )
    }
}

struct ContentView: View {
    var body: some View {
        Parent()
    }
}

ইস্যু আমার স্থাপন মিথ্যা বলে মনে হয় NavigationLinkএকটি ভেতরে navigationBarItemsপরিবর্তক একটি SwiftUI দৃশ্য যার শিকড় দৃশ্য একটি হল নেস্টেড ভিতরে যে NavigationView। ক্র্যাশ প্রতিবেদনটি ইঙ্গিত দেয় যে আমি এমন একটি ভিউ কন্ট্রোলারে পপ করার চেষ্টা করছি যা অস্তিত্বহীন থাকে যখন আমি এগিয়ে যান Childএবং তারপরে ফিরে যাব Parent

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:

আমি যদি পরিবর্তে NavigationLinkনীচের মত দৃশ্যের শৃঙ্খলে রাখি তবে এটি ঠিক কাজ করে।

struct Parent: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Child(), label: { Text("Next") })
        }
    }
}

এটি কি একটি সুইফটিআইআই বাগ বা প্রত্যাশিত আচরণ?

সম্পাদনা: আমি অ্যাপলের সাথে তাদের মতামত সহকারী হিসাবে আইডি সহ একটি ইস্যু খুলেছি FB7423964যদি অ্যাপল থেকে অন্য কেউ যদি ওজন করতে না পারে তবে :)।

সম্পাদনা: প্রতিক্রিয়া সহকারীতে আমার উন্মুক্ত টিকিটটি ইঙ্গিত করে যে এখানে 10+ অনুরূপ রিপোর্ট করা সমস্যা রয়েছে। তারা রেজোলিউশনটি আপডেট করেছে Resolution: Potential fix identified - For a future OS update। আঙুলগুলি পেরিয়ে গেছে যে শিগগিরই স্থির করা হবে।

সম্পাদনা: এটি আইওএস 13.3 এ স্থির করা হয়েছে!


আপনি উপরোক্ত উদাহরণটি Xcode 11.2 বিটার সাথে ঠিক কাজ করে। আমরা এখানে কিছু হারিয়েছে?
সুব্রহ্মণিয়ান মারিয়াপ্পান

@ সুব্রাহ্মণ্যমরিয়াপ্পান 11.2 বিটাতেও এটি আমার পক্ষে ভাল কাজ করছে।
ফারহান আমজাদ

1
আকর্ষণীয়, এটি আমার জন্য প্রতিটি সময় ক্রাশ হয়। এমনকি আমি একটি নতুন প্রকল্প তৈরি করার চেষ্টা করেছিলাম এবং সেই সঠিক কোডটির স্থানে অনুলিপি করেছি ContentView.swift। আমি পোস্টটিতে একটি সম্পাদনা করব, তবে ক্রাশটি তখনই ঘটে যখন আপনি এগিয়ে এবং তারপরে ফিরে যান।
রবার্ট

দুর্দান্ত প্রশ্ন! আপনার এখানে উদাহরণ আমার জন্য প্রতিবার ক্র্যাশ। আমি সবেমাত্র একটি নতুন উত্তর পোস্ট করেছি যা আমার পক্ষে খুব ভাল কাজ করে। এটি আপনার পক্ষে কাজ করে কিনা তা আমাকে জানান। ধন্যবাদ।
চক এইচ

1
আপেল টিকিট সম্পর্কিত আপডেটের জন্য ধন্যবাদ!
মাল্ট করুন

উত্তর:


20

এটি আমার জন্য বেশ ব্যথার বিষয় ছিল! আমার অ্যাপ্লিকেশনটির বেশিরভাগটি শেষ না হওয়া পর্যন্ত আমি এটি ছেড়ে দিয়েছি এবং ক্র্যাশিংয়ের মোকাবিলায় আমার মনের জায়গা ছিল।

আমি মনে করি আমরা সবাই একমত হতে পারি যে SwifUI এর সাথে দুর্দান্ত কিছু দুর্দান্ত জিনিস রয়েছে তবে এটি ডিবাগ করা কঠিন হতে পারে।

আমার মতে, আমি বলব যে এটি একটি বিইউজি। আমার যুক্তি এখানে:

  • আপনি যদি উপস্থাপনাটি মোড়কে থাকেন তবে প্রায় দেড়-সেকেন্ডের একটি অ্যাসিনক্রোনাস বিলম্বের মধ্যে কলটি বরখাস্ত করুন, আপনার খুঁজে পাওয়া উচিত যে প্রোগ্রামটি আর ক্রাশ হবে না।

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        self.presentationMode.wrappedValue.dismiss()
    } 
    
  • এটি আমার কাছে পরামর্শ দেয় যে ত্রুটিটি একটি অপ্রত্যাশিত আচরণের নীচে রয়েছে কীভাবে সুইফটইউআই অন্য সমস্ত ইউআইকিট কোডের সাথে বিভিন্ন মতামত পরিচালনা করতে ইন্টারফেস করে। আপনার আসল কোডের উপর নির্ভর করে আপনি দেখতে পাবেন যে ভিউটিতে কিছুটা ছোটখাটো জটিলতা থাকলে ক্র্যাশটি আসলে ঘটবে না। উদাহরণস্বরূপ, আপনি যদি একটি ভিউ থেকে একটি তালিকা রয়েছে যার কাছে এই তালিকাটি খারিজ করে দিচ্ছেন এবং সেই তালিকাটি খালি, আপনি অ্যাসিঙ্ক্রোনাস বিলম্ব ছাড়াই ক্র্যাশ পাবেন। অন্যদিকে, যদি তালিকার দৃশ্যে আপনার কেবল একটি প্রবেশিকা থাকে, পিতা-মাতাকে দেখার জন্য একটি লুপ পুনরাবৃত্তি জোর করে, আপনি দেখতে পাবেন যে ক্রাশটি ঘটবে না।

আমি এতটা নিশ্চিত নই যে বিলম্বের মধ্যে বরখাস্ত কলটি মোছার আমার সমাধানটি কতটা শক্ত। আমাকে আরও অনেক পরীক্ষা করতে হবে। যদি আপনার এই সম্পর্কে ধারণা থাকে তবে দয়া করে আমাকে জানান! আমি আপনার কাছ থেকে জানতে পেরে খুব খুশি হব!


1
খুব চালাক! আমি এটা ভাবিনি। আশা করছি তাড়াতাড়ি ঠিক হয়ে যায়!
রবার্ট

1
@ রবার্ট এটি আপনার সমস্যার সমাধান করেছেন? এটি একটি জটিল বিষয় যেহেতু আমি খুঁজে পেয়েছি যে চাইল্ড নেভিগেশন ভিউয়ের মধ্যে একটি পিকার ব্যবহার করছে found একটি খণ্ডিত পিকার শৈলীর কাজ করার সময়, পূর্ববর্তী বোতামটি ক্লিক করার সময়, ডিফল্ট একই পয়েন্টে ক্র্যাশ ঘটায় বলে মনে হয়। এটি এখনও আপনাকে শোক দিলে আমরা আরও আলোচনা করতে পারি। পুনশ্চ. আমি আমার সমাধান ঘৃণা করি। এটি একটি হ্যাক তবে এটি এমন একটি যা কোড আপডেটের দরকার নেই যদি অ্যাপল সময় সংক্রান্ত সমস্যাটি ঠিক করে দেয়।
জাস্টিন নাগান

2
আমি সম্মত হই যে সময় নির্ধারণের দিকটি 11.1 সালে এটি দুর্দান্ত কাজ করেছে এবং .navigationBarItems()এটি একটি বাগ হওয়ার কারণে পয়েন্টের বাইরে কাজ করে ।
জন এম

3
হ্যাঁ, আমি বিশ্বাস করি এটি একটি ত্রুটি এবং এটি অনুগ্রহ পুরষ্কারের জন্য আমার বর্তমান শীর্ষস্থানীয় প্রার্থী। যেহেতু আমার এই লেখার সময় হিসাবে অনুগ্রহে 4 দিন বাকি রয়েছে আমি যেহেতু নতুন তথ্য সহ যে কেউ উপস্থিত হয় সে ক্ষেত্রে আমি কেবল আছি holding
রবার্ট

1
এটি একটি খুব আকর্ষণীয় টিপ ছিল, এর জন্য ধন্যবাদ! দুর্ভাগ্যক্রমে আমি এখনও 100% সময় সিমুলেটারে নির্ভরযোগ্যভাবে অ্যাপটি ক্র্যাশ করছি: / এটি ডিভাইসে আরও ভাল কাজ করে তবে এগুলি বিন্দু বিন্দু বিন্দু ছাড়াই নয়। তবে দেরি না করে বিষয়টিও ছিল।
কিলিয়ান

15

এটি বেশ কিছু সময়ের জন্য আমাকে হতাশও করেছিল। গত কয়েক মাস ধরে, এক্সকোড সংস্করণ, সিমুলেটর সংস্করণ এবং রিয়েল ডিভাইসের ধরণ এবং / অথবা সংস্করণের উপর নির্ভর করে এটি এলোমেলোভাবে আপাতদৃষ্টিতে কাজ করতে ব্যর্থ হয়ে কাজ করে চলেছে। যাইহোক, সম্প্রতি এটি আমার জন্য ধারাবাহিকভাবে ব্যর্থ হয়েছে, তাই গতকাল আমি এটিতে একটি গভীর ডুব নিয়েছি। আমি বর্তমানে এক্সকোড সংস্করণ 11.2.1 (11B500) ব্যবহার করছি।

দেখে মনে হচ্ছে ইস্যুটি ন্যাভ বার এবং যেভাবে বোতামগুলি এতে যুক্ত করা হয়েছিল তার চারদিকে ঘোরে। সুতরাং বোতামের জন্য নিজেই একটি নেভিগেশনলিঙ্ক () ব্যবহার না করে আমি একটি স্ট্যান্ডার্ড বোতাম () ব্যবহার করে এমন একটি ক্রিয়া ব্যবহার করে চেষ্টা করেছি যা একটি @ স্টেট ভেরি সেট করে যা একটি লুকানো নেভিগেশন লিঙ্ককে সক্রিয় করে। রবার্টের পিতামাতার দৃশ্যের প্রতিস্থাপন এখানে রয়েছে:

struct Parent: View {
    @State private var showingChildView = false
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello World")
                NavigationLink(destination: Child(),
                               isActive: self.$showingChildView)
                { EmptyView() }
                    .frame(width: 0, height: 0)
                    .disabled(true)
                    .hidden()            
             }
             .navigationBarItems(
                 trailing: Button(action:{ self.showingChildView = true }) { Text("Next") }
             )
        }
    }
}

আমার জন্য, এটি সমস্ত সিমুলেটর এবং সমস্ত বাস্তব ডিভাইস জুড়ে খুব ধারাবাহিকভাবে কাজ করে।

এখানে আমার সহায়ক মতামত:

struct HiddenNavigationLink<Destination : View>: View {

    public var destination:  Destination
    public var isActive: Binding<Bool>

    var body: some View {

        NavigationLink(destination: self.destination, isActive: self.isActive)
        { EmptyView() }
            .frame(width: 0, height: 0)
            .disabled(true)
            .hidden()
    }
}

struct ActivateButton<Label> : View where Label : View {

    public var activates: Binding<Bool>
    public var label: Label

    public init(activates: Binding<Bool>, @ViewBuilder label: () -> Label) {
        self.activates = activates
        self.label = label()
    }

    var body: some View {
        Button(action: { self.activates.wrappedValue = true }, label: { self.label } )
    }
}

ব্যবহারের উদাহরণ এখানে:

struct ContentView: View {
    @State private var showingAddView: Bool = false
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
                HiddenNavigationLink(destination: AddView(), isActive: self.$showingAddView)
            }
            .navigationBarItems(trailing:
                HStack {
                    ActivateButton(activates: self.$showingAddView) { Image(uiImage: UIImage(systemName: "plus")!) }
                    EditButton()
            } )
        }
    }
}

আমি এই কাজগুলি নিশ্চিত করতে পারি (হ্যাকের জন্য সত্যই ভাল ;-))! অ্যাপল যদিও এই asap ঠিক করা প্রয়োজন। এক্সকোড 11.2.1, ক্যাটালিনা 10.15.2 (বিটা), আইওএস 13.2.2
পি এন্ট

1
আমি 100% সম্মত। সাধারণত, সুইফ্টইউআইতে নেভিগেশন সম্পর্কিত, এমন অনেক কিছুই রয়েছে যা ভেঙে গেছে বা কেবল সরল নিখোঁজ। অবশ্যই আমাদের আসল সমস্যার দিকে নিয়ে যায়। অ্যাপল থেকে কোনও "সত্যের উত্স" (যেমন ডকুমেন্টেশন এবং উদাহরণ) নেই, কেবল আমাদের মতো হ্যাক। বিটিডাব্লু, আমি উপরের কৌশলটি এত বেশি ব্যবহার করি, আমি দুটি ইউটিলিটি মতামত তৈরি করেছি যা পাঠযোগ্যতার সাথে অনেকটা সহায়তা করে। কেউ আগ্রহী হলে আমি সেগুলিকে আমার উত্তরে যুক্ত করব।
চক এইচ

কাজের জন্য ধন্যবাদ, এটি ঠিক কাজ করে!
স্ট্যানিস্লাভ পোস্টলাভস্কি

1
এটি একাধিক নেভিগেশনের জন্য আমার পক্ষে কাজ করে না। একবার আপনি পূর্বের স্ক্রিনে ফিরে এসেছেন, অদৃশ্য লিঙ্কটি আর কাজ করে না।
জন শিয়ার

1
আমার 13.3 এ বেশ কয়েকটি বাস্তব ডিভাইস রয়েছে (17C54 বিল্ড করুন) এবং এগুলি সমস্ত পছন্দসইভাবে কাজ করে। যেহেতু আমি আমার প্রায় সমস্ত পরীক্ষার বাস্তব ডিভাইসে করি, তাই আমি প্রায়শই সিমুলেটরটি ব্যবহার করি না। তবে আমি মাত্র 13.3 সিমুলেটারে আমার পরীক্ষার কেসটি চেষ্টা করেছিলাম এবং সেখানে পরীক্ষাটি ব্যর্থ হয়। আমি লক্ষ করেছি যে এক্সকোড সিমুলেটরটিতে আইওএস 13.3 জনসাধারণের আপডেটের চেয়ে আগের বিল্ড (17 সি 45)। কেউ যদি সত্যিকারের ডিভাইসে ব্যর্থ আচরণটি পর্যবেক্ষণ করে তা জানতে আগ্রহী হব।
চক এইচ

12

এটি একটি বড় বাগ এবং আমি এর চারপাশে কাজ করার উপযুক্ত উপায় দেখতে পাচ্ছি না। আইওএস 13 / 13.1 এ দারুণভাবে কাজ করেছে তবে 13.2 ক্র্যাশ হয়েছে।

আপনি আসলে এটি আরও সরল উপায়ে প্রতিলিপি করতে পারেন (এই কোডটি আক্ষরিকরূপে আপনার যা প্রয়োজন তা হ'ল)

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Hello, World!").navigationBarTitle("To Do App")
                .navigationBarItems(leading: NavigationLink(destination: Text("Hi")) {
                    Text("Nav")
                    }
            )
        }
    }
}

আশা করি অ্যাপল এটিকে সাজিয়ে ফেলবে কারণ এটি অবশ্যই সুইফটআইআই অ্যাপ্লিকেশনগুলি (খনি সহ) ভাঙ্গবে।


হাহাহা ... বেশ দুর্দান্ত। আপনি একটি পাঠ্য দৃশ্যে নেভিগেট করেছেন যা সুইফটআইআই-এ, একটি দৃশ্য! হ্যাঁ, এটিকে ফিরে যাওয়া উচিত তার পিতামাতার উচিত নয়? তবুও, তা হয় না। এটি আকর্ষণীয় যে আপনার উদাহরণ থেকে আচরণটি ইউআই ভেঙে দেয় তবে আসলে মারাত্মক ক্র্যাশ হয় না।
জাস্টিন নাগান

হ্যাঁ সুইফ্টইউআইয়ের যৌগিকতা (এবং প্রতিক্রিয়া নেটিভ / বিড়ম্বনা ইত্যাদি) অবিশ্বাস্য। আপনাকে এত নিয়ন্ত্রণ / নমনীয়তা দেয় (যখন এটি কমপক্ষে কাজ করে)।
জেমস

1
ক্যাটালিনা (10.15.1), এক্সকোড (১১.২.১), আইওএস (১৩.২.২)
পি এন্ট

এটি আর 13.3 মধ্যে ক্র্যাশ তবে গৌণ শুধুমাত্র প্রথমবার আপনি এটা আরম্ভ 🤦♂️ কাজ মনে হয়
জেমস

6

উপরের চক এইচ এর উত্তরের উপর ভিত্তি করে একটি কার্যক্ষম হিসাবে, আমি নেভিগেশনলিঙ্ককে একটি গোপন উপাদান হিসাবে আবদ্ধ করেছি:

struct HiddenNavigationLink<Content: View>: View {
var destination: Content
@Binding var activateLink: Bool

var body: some View {
    NavigationLink(destination: destination, isActive: self.$activateLink) {
        EmptyView()
    }
    .frame(width: 0, height: 0)
    .disabled(true)
    .hidden()
}
}

তারপরে আপনি এটিকে নেভিগেশনভিউ (যা গুরুত্বপূর্ণ) এর মধ্যে ব্যবহার করতে পারেন এবং একটি এনএভি বারের বোতাম থেকে এটি ট্রিগার করতে পারেন:

VStack {
    HiddenNavigationList(destination: SearchView(), activateLink: self.$searchActivated)
    ...
}
.navigationBarItems(trailing: 
    Button("Search") { self.searchActivated = true }
)

এটিকে "// হ্যাক" মন্তব্যে আবদ্ধ করুন যখন অ্যাপল এটি স্থির করে আপনি এটিকে প্রতিস্থাপন করতে পারেন।


এটি কেবল iOS 13.3 এ প্রথম ব্যবহারে কাজ করবে বলে মনে হচ্ছে।
জেমস

3

আপনি ছেলেরা যে তথ্য সরবরাহ করেছেন তার উপর ভিত্তি করে এবং বিশেষত একটি মন্তব্য যে @ রবার্ট ন্যাভিগেশনভিউ যেখানে স্থাপন করেছেন সে সম্পর্কে করেছিলেন আমি কমপক্ষে আমার নির্দিষ্ট দৃশ্যে এই সমস্যাটিকে সমাধান করার একটি উপায় পেয়েছি।

আমার ক্ষেত্রে আমার একটি ট্যাবভিউ ছিল যা এটি একটি নেভিগেশনভিউতে আবদ্ধ ছিল:

struct ContentViewThatCrashes: View {
@State private var selection = 0

var body: some View {
    NavigationView{
        TabView(selection: $selection){
            NavigationLink(destination: NewView()){
                Text("First View")
                    .font(.title)
            }
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)
            NavigationLink(destination: NewView()){
                Text("Second View")
                    .font(.title)
            }
            .tabItem {
                VStack {
                    Image("second")
                    Text("Second")
                }
            }
            .tag(1)
        }
    }
  }
}

আইওএস ১৩.২-এ প্রতিবেদন করার সাথে সাথে আইওএস 13.1 এ কাজ করার সাথে সাথে এই কোডটি ক্র্যাশ হয়ে গেছে। কিছু গবেষণা করার পরে আমি এই পরিস্থিতিটির একটি কার্যকরী বিষয় খুঁজে বের করেছি।

মূলত, আমি নেভিগেশনভিউকে প্রতিটি স্ক্রিনে পৃথকভাবে প্রতিটি ট্যাবে আলাদা করে নিয়ে যাচ্ছি:

struct ContentViewThatWorks: View {
@State private var selection = 0

var body: some View {
    TabView(selection: $selection){
        NavigationView{
            NavigationLink(destination: NewView()){
                Text("First View")
                    .font(.title)
            }
        }
        .tabItem {
            VStack {
                Image("first")
                Text("First")
            }
        }
        .tag(0)
        NavigationView{
            NavigationLink(destination: NewView()){
                Text("Second View")
                    .font(.title)
            }
        }
        .tabItem {
            VStack {
                Image("second")
                Text("Second")
            }
        }
        .tag(1)
    }
  }
}

একরকম সরলতার SwiftUI ভিত্তির বিরুদ্ধে যায় তবে এটি আইওএস 13.2 এ কাজ করে।


এটি কাজ করে তবে, সমস্যাটি নিউ ভিউতে থাকা ট্যাবভিউগুলি সরিয়ে দিচ্ছে।
ফ্রিড্ডায়ে

1
@ এফআরডিডিএই উদাহরণটি ১৩.১ এ কাজ করে তবে ১৩.২ এ ক্র্যাশ হয়ে গেছে। এটি একটি পরিচিত বাগ এবং আমার উদ্দেশ্যটি ছিল একই
দৃশ্যে কাউকে

1

এক্সকোড 11.2.1 সুইফট 5

বুঝেছি! এটি বের করতে আমার কয়েকদিন লেগেছে ...

আমার ক্ষেত্রে সুইফ্টআইআই ব্যবহার করার সময় আমি কেবলমাত্র যদি আমার তালিকার নীচের অংশটি পর্দার বাইরে প্রসারিত হয় এবং তখন আমি কোনও তালিকা আইটেমগুলিকে "সরানো" চেষ্টা করি তবেই আমি ক্র্যাশ পেয়ে যাচ্ছি। আমি যে বিষয়টি জানতে পেরেছি তা হ'ল তালিকার নীচে আমার যদি খুব বেশি "স্টাফ" থাকে () তবে তা চলতে গিয়ে ক্র্যাশ হয়ে যায়। উদাহরণস্বরূপ, আমার তালিকার নীচে () আমার একটি পাঠ্য ছিল (), স্পেসার (), বোতাম (), স্পেসার () বোতাম ()। যদি আমি এইগুলির মধ্যে একটিরও মন্তব্য করে থাকি তবে হঠাৎ আমি ক্র্যাশটি পুনরায় তৈরি করতে পারি না। সীমাবদ্ধতাগুলি কী তা আমি নিশ্চিত নই, তবে আপনি যদি এই ক্র্যাশ পেয়ে যাচ্ছেন তবে এটি আপনার সহায়তা করে কিনা তা দেখার জন্য আপনার তালিকার নীচের বিষয়গুলি সরিয়ে দেওয়ার চেষ্টা করুন।


0

যদিও আমি কোনও ক্র্যাশ দেখতে পাচ্ছি না, আপনার কোডটিতে কিছু সমস্যা রয়েছে:

শীর্ষস্থানীয় আইটেমটি সেট করে আপনি প্রকৃতপক্ষে নেভিগেশন ট্রানজিশনের ডিফল্ট আচরণকে হত্যা করবেন। (এটি কাজ করে কিনা তা দেখতে শীর্ষস্থান থেকে সোয়াইপ করে দেখুন)।

সুতরাং সেখানে বোতাম রাখার দরকার নেই। ঠিক যেমন এটি ছেড়ে দিন এবং আপনার কাছে ফ্রি ব্যাক বোতাম রয়েছে।

আর অনুযায়ী ভুলবেন না HIG , ব্যাক বোতাম শিরোনাম দেখানো উচিত যেখানে এটি যায়, না কি এটা! সুতরাং এটিতে যে কোনও ব্যাক বোতামটি পপ হয় এটির জন্য প্রথম পৃষ্ঠার জন্য একটি শিরোনাম সেট করার চেষ্টা করুন।

struct Parent: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationBarItems(
                    trailing: NavigationLink(destination: Child(), label: { Text("Next") })
                )
                .navigationBarTitle("First Page",displayMode: .inline)
        }
    }
}

struct Child: View {
    @Environment(\.presentationMode) var presentation
    var body: some View {
        Text("Hello, World!")
    }
}

struct ContentView: View {
    var body: some View {
        Parent()
    }
}

1
আরে, উত্তরের জন্য ধন্যবাদ। যদিও আমি সম্মত হই না যে ডিফল্ট ব্যাক বোতামের আচরণটি ত্যাগ করা বাঞ্ছনীয়, এটি এখনও ক্রাশের জন্ম দেয়।
রবার্ট

আপনি কি সংস্করণ ব্যবহার করছেন? আমি এটি প্রেরণের আগে পরীক্ষা করেছি। হতে পারে আপনার আর একটি সমস্যা আছে। আপনি একটি নমুনা প্রকল্প প্রদান করতে পারেন দয়া করে?
মোজতাবা হোসেইনি

1
এক্সকোড 11.2 বিটা মত প্রশ্ন। প্রশ্নটিতে আমি যে উদাহরণটি দিয়েছি তা হ'ল ক্র্যাশটি পুনরুত্পাদন করার জন্য আপনার প্রয়োজন।
রবার্ট

আমি একই সংস্করণ এবং একই কোড ব্যবহার করছি তবে কোনও ক্রাশ হবে না Mo
মোজতাবা হোসেইনি

1
ক্যাটালিনা (10.15.1), এক্সকোড (১১.২.১), আইওএস (১৩.২.২)
পি এন্ট

0

এফডব্লিউআইডাব্লু - একটি লুকানো নেভিগেশনলিঙ্ক হ্যাকের পরামর্শ দেওয়া উপরোক্ত সমাধানগুলি এখনও আইওএস 13.3 বি 3-র সেরা কাজ। আমি উত্তর-পূর্বের জন্য একটি FB7386339 ফাইলও করেছি, এবং অন্য পূর্বোক্ত এফবিগুলির মতো একইভাবে বন্ধ করে দিয়েছি: "সম্ভাব্য ফিক্স চিহ্নিত হয়েছে - ভবিষ্যতের ওএস আপডেটের জন্য"।

আঙ্গুলগুলি ক্রসড।


উত্তর হিসাবে মন্তব্য যুক্ত করা এড়াতে দয়া করে।
কার্তিক রমেশ

0

এটি আইওএস 13.3 এ সমাধান করা হয়েছে। কেবলমাত্র আপনার ওএস এবং এক্সকোড আপডেট করুন।


1
এক্সকোড 11.3 (11 সি 29) 10.15.2 এ আমার জন্য আলাদা আচরণের ফলাফল করে: পিছনের দিকের নেভিগেশন কাজ করছে, কিন্তু পরে নেভিগেশনলিংকের আর কোনও কার্য নেই। এটি ক্লিক করলে কিছুই হয় না।
ম্যালেট

@ মলতে এটির জন্য একটি নতুন প্রশ্ন খোলাই ভাল। আমি আপনার কোড পরীক্ষা করার আগে আপনার নেভিগেশনলিঙ্ক .buttonStyle(PlainButtonStyle())সংশোধক দিন এবং আবার চেষ্টা করুন। আপনি যদি কোন প্রশ্ন জিজ্ঞাসা করেন তবে আমাকে জানান।
শুক্রবার

1
তুমি ঠিক বলছো. সক্রিয় ইতিমধ্যেই একটি নতুন প্রশ্ন হল আউট: stackoverflow.com/questions/59279176/...
malte
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.