নেভিগেশনলিঙ্ক কেবল একবারের জন্য কাজ করে


75

আমি লগইন সহ একটি অ্যাপ্লিকেশন উপর কাজ করছিলাম এবং লগইন পরে এখানে বিভাগ তালিকাভুক্ত করা হয়। এবং প্রতিটি বিভাগের আওতায় অনুভূমিকভাবে তালিকাভুক্ত কিছু আইটেম রয়েছে। লগইন করার পরে জিনিসটি হল, প্রধান পৃষ্ঠাটি উপস্থিত হয় এবং সবকিছু দুর্দান্ত তালিকাভুক্ত হয়। আপনি যখন কোনও আইটেমে ক্লিক করেন এটি বিশদ স্ক্রিনে যায় তবে আপনি যখন পিছনে ফিরে যাওয়ার চেষ্টা করেন কেবল ক্র্যাশ হয়ে যায়। আমি এই প্রবাহটি পেয়েছি কেন একটি `নেভিগেশনভিউ`তে একটি` নেভিগেশনবারিটটেমের ভিতরে a নেভিগেশনলিঙ্ক `রাখার পরে পিছনে নেভিগেট করার সময় আমার সুইফটুআই অ্যাপটি ক্রাশ হয়? তবে আমি আমার সমস্যা সমাধান করতে পারিনি যেহেতু আমার প্রকল্পটি জটিল হয়ে উঠেছে, আমি কেবল সুইফটুইতে নেভিগেশন অনুশীলন করতে চেয়েছিলাম এবং আমি একটি নতুন প্রকল্প তৈরি করেছি। উপায় দ্বারা আমি সর্বশেষতম এক্সকোড সংস্করণ 11.3 ডাউনলোড করেছি। আমি নীচে একটি সহজ কোড লিখেছি:

NavigationView{
        NavigationLink(destination: Test()) {
            Text("Show Detail View")
        }
    .navigationBarTitle("title1")

এবং পরীক্ষার () মতামতটি নিম্নরূপ:

import SwiftUI

struct Test: View {
    var body: some View {
        Text("Hello, World!")
    }
}

struct Test_Previews: PreviewProvider {
    static var previews: some View {
        Test()
    }
}

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


2
xCode 11.2 (11B52) এর সংস্করণ, এই কোডটি ক্যানভাস এবং ডিভাইস উভয়তেই প্রত্যাশা অনুযায়ী কাজ করে
31 Грабовский

3
এক্সকোড 11.2 / আইওএস 13.2 দিয়ে আপনার কোড স্ন্যাপশট পরীক্ষিত - ভাল কাজ করে। এক্সকোড ডাউনগ্রেড করার চেষ্টা করুন।
Asperi

1
এক্সকোড সংস্করণ 11.2.1 (11B500) আপনার কোডটি এটি যেমন প্রয়োজন তেমন কাজ করে।
নালোভ

2
আমি অ্যাপলের কাছে একটি পর্যালোচনা প্রেরণ করেছি, এটি ভবিষ্যতের আপডেটের জন্য অপেক্ষা করা থেকে যায়
Грабовский

1
পাঠানো বাগের প্রতিবেদন FB7518930
পাকু

উত্তর:


56

[আপডেট] 12 ফেব্রুয়ারী, 2020 - আমি Xcode 11.4 বিটাতে এই সমস্যাটি পরীক্ষা করে দেখেছি যে এই সমস্যাটির সমাধান হয়েছে।


আমি আমার প্রকল্পেও একই সমস্যা পেয়েছিলাম, যখন আমি এটি এক্সকোডের সিমুলেটারে পরীক্ষা করছিলাম। যাইহোক, আমি যখন একটি বাস্তব ডিভাইসে অ্যাপ্লিকেশন চালু করেছি (আইওএস এক্স আইওএস 13.3 সহ) NavigationLinkপুরোপুরি ঠিকঠাক কাজ করছিল। সুতরাং, এটি আসলে Xcode এর বাগের মতো মনে হচ্ছে।


10
আমার জন্য ঠিক একই। আমি সুইফটুইকে একটি নতুন অ্যাপের জন্য বেছে নেওয়ার জন্য আফসোস করতে শুরু করছি
মমুক

6
আমি খুব বোকা বোধ করে মাত্র 4 ঘন্টা সময় কাটিয়েছি ... এই জিনিসগুলি উত্পাদন প্রস্তুত নয় ...
সেবাস্তিয়ান

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

@ ডেভিডরিচ যদি সুইফটইউআই বিটাতে থাকত তবে আমি বুঝতে পারি যে এখানে প্রচুর সমস্যা হবে। উত্পাদনের জন্য প্রস্তুত সরঞ্জামদানের ক্ষেত্রে, কমপক্ষে একটিকে আশা করতে হয় এটি কাজ করে। গত বছর প্রাথমিক প্রকাশের পর থেকে আইওএস এবং ম্যাকোসের বেশ কয়েকটি "পয়েন্ট আপডেট" হয়েছে, সুতরাং এর মতো সুস্পষ্ট বাগগুলি বা "জাম্পিং তালিকার শিরোনাম বাগ" অনেক আগেই স্কোয়াশ করা উচিত ছিল। আমি এটি একটি প্রোডাকশন অ্যাপ্লিকেশনের জন্য ব্যবহার করার চেষ্টা করেছি, তবে একটি ভাল ফলাফল পেতে ইউআইকিট-এ ফিরে যেতে হয়েছিল।
জিজে নীলসেন

3
[আপডেট] 12 ফেব্রুয়ারী, 2020 - আমি Xcode 11.4 বিটাতে এই সমস্যাটি পরীক্ষা করে দেখেছি যে এই সমস্যাটির সমাধান হয়েছে।
সাগুন রাজ লাগা

5

সিমুলেটর 11.4: এই সমস্যাটি ঠিক করা হয়েছে

isActiveদ্বিতীয় ভিউতে আপনাকে ডিফল্ট মানটি পুনরায় সেট করতে হবে । এটি ডিভাইস এবং ইমুলেটরগুলিতে কাজ করে।

struct NavigationViewDemo: View {
    @State var isActive = false

    var body: some View {
        NavigationView {
            VStack {
                Text("View1")
                NavigationLink(
                    destination: NavigationViewDemo_View2(isActive: $isActive),
                    isActive: $isActive,
                    label: { Button(action: { self.isActive = true }, label: { Text("click") }) })
            }
        }
    }
}

struct NavigationViewDemo_View2: View {
    @Binding var isActive: Bool

    var body: some View {
        Text("View2")
            .navigationBarItems(leading: Button(action: { self.isActive = false }, label: { Text("Back") }))
    }
}

ন্যাভিগেশনলিঙ্ক একাধিকবার কাজ করার বিষয়ে আমার সিমুলেটর এবং আমার দৈহিক ডিভাইস উভয়ই নিয়ে সমস্যা রয়েছে। সিমুলেটরটিতে এটি কোনও কিছুই ঠিক করে না, তবে এটির সাথে একটি অনুরূপ পদ্ধতি যা আমার শারীরিক ডিভাইসের জন্য কাজ করে তা ভিউ 2-তে একটি অনডিস্পার সেট করছে যা সক্রিয় পতাকাটিকে পুনরায় সেট করে। এটি একটি এক্সকোড বাগের জন্য একটি প্রান্তিক পরিচ্ছন্নতার কাজ (কারণ আপনাকে এমন একটি রাষ্ট্রের সাথে আবদ্ধ করতে হবে না যা ভিউ 2 সম্পর্কে জানা উচিত নয়)। নেভিগেশনভিউডেমো_ভিউ 2 () .অনডিস্পিয়ার (সঞ্চালন করুন: {স্ব.আইএসএকটিভ = মিথ্যা})
এস জোসি

@ জোসি আমি পেয়েছি তবে onDisappear পরে isActiveমিথ্যা বলা হবে তাই নেভিগেশনভিউ সঠিকভাবে কাজ করবে না। এটি এমুলেটরগুলির জন্য কেবলমাত্র অস্থায়ী সমাধান কারণ নেভিগেশনভিউ ডিভাইসে সঠিকভাবে কাজ করে। এমুলেটরগুলির আগের সংস্করণগুলিতে নেভিগেশনভিউ কাজ করেছিল আমি আশা করি এটি ভবিষ্যতের এমুলেটরটিতে স্থির হয়ে যাবে।
ভিক্টর কুশনারভ

আশ্চর্যের বিষয় হল, এই কোডটি আমার সিমুলেটর বা শারীরিক ডিভাইসে কাজ করে না - আমি প্রস্তাবিত সমাধানটি সক্রিয় পতাকাটিকে পুনরায় সেট করে যখন বিশদ দৃশ্যটি বরখাস্ত করা হয়, এবং দৈহিক যন্ত্রটি কাজ করতে দেয় allows রাস্তায় কথাটি
হ'ল এক্সকোড

আমি সিমুলেটার 11.3.1 এ পরীক্ষা করেছি এটি একটি কবজির মতো কাজ করে। আপনি 3 টি দেখুন দেখুন আমি মনে করি অন্যরাও সহায়তা করেছে।
ভিক্টর কুশনারভ

হ্যাঁ, আমিও, এটিতে একাধিক আইফোন ব্যবহার করে পরীক্ষা করেছি। এছাড়াও, 4 টি শারীরিক ডিভাইসে পরীক্ষিত - কোনও ভাগ্য নেই। এই বাগটি অবশ্যই একটি হাস্যকর। আমি এই সময়ের মধ্যে সিমুলেটারের জন্য কিছু হাস্যকর কাজ করেছি।
এসজেসি

3

সম্ভবত এই যখন অ্যাপল সমাধান করা হয়েছে সমাধান হবে সংশ্লিষ্ট বাগ একটি স্থাপনার টার্গেট হিসাবে নির্বাচনযোগ্য হচ্ছে থেকে আটকায় 13.3

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


1

@ Александр Грабовский যেমন এটি একটি Xcode 11.3 বাগের মতো বলে মনে হচ্ছে, আমিও একই সমস্যার মুখোমুখি হচ্ছি, আপনাকে অবশ্যই নীচে হিসাবে কাস্টম ব্যাক বোতামের মতো কিছুটা ব্যবহার করতে হবে

struct ContentView: View {
    @State private var pushed: Bool = false

    var body: some View {

        NavigationView {
            VStack {
                Button("Show Detail View") {
                    self.pushed.toggle()
                }

                NavigationLink(destination: Test(pushed: $pushed), isActive: $pushed) { EmptyView() }
            }.navigationBarTitle("title1")
        }
    }
}
struct Test: View {
    @Binding var pushed: Bool
    var body: some View {
        Text("Hello, World!")
            .navigationBarBackButtonHidden(true)
            .navigationBarItems(leading: BackButton(label: "Back") {
                self.pushed = false
            })
    }
}
struct BackButton: View {
    let label: String
    let closure: () -> ()

    var body: some View {
        Button(action: { self.closure() }) {
            HStack {
                Image(systemName: "chevron.left")
                Text(label)
            }
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.