ইউআইএনএভিগেশন বার বার বোতামের পাঠ্যটি লুকান


109

আমি কীভাবে কোনও ইউআইএনএভিগেশন কন্ট্রোলার থেকে পিছনে বোতামের পাঠ্যটি আড়াল করতে পারি? আমার কাছে কেবল "<" থাকবে এবং "<পিছনে" থাকবে না


4
আপনি ডিফল্ট পাঠ্যটি সংশোধন করতে পারবেন না, পরিবর্তে কাস্টম ব্যাক বোতামটি সেট করতে নেভিগেশন
আইটেম.এলফট বারবার


আপনি যদি উপস্থিতি প্রক্সি ব্যবহার করে বিশ্বব্যাপী সমাধান চান তবে নীচে আমার উত্তরটি দেখুন।
fl034

উত্তর:


111

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

আপনি এই কোডের এই লাইন দিয়ে এটি পরিবর্তন করতে পারেন :

[self.navigationItem.backBarButtonItem setTitle:@"Title here"];

বা সুইফটে :

self.navigationItem.backBarButtonItem?.title = ""


4
ইন্টারফেস বিল্ডারে খালি জায়গা নির্ধারণের জন্য দুর্দান্ত টিপ ... :
ফিলিপ ফেরি

9
ইন্টারফেস বিল্ডার এবং সুইফ্ট প্রোগ্রাম্যাটিক রুটগুলি
এক্সকোড 8.3.2

অ্যাপের মাধ্যমে সমস্ত ব্যাক বোতামগুলি আড়াল করার জন্য আপনি আমার খুব সহজ সমাধানটি চেক করতে পারেন । পিএস: আপনার নিজের কোডের শূন্য লাইনের প্রয়োজন
প্রতীক জামারিয়া

4
যদি Back Buttonআইবিতে ইতিমধ্যে ফাঁকা থাকে, তবে আরোহণের জন্য Backকেবল একটি স্থান যুক্ত করুন এবং কেবল তীরটি দেখান।
তেজাস কে

4
এই পদ্ধতিটি বর্তমানে কেবল ইন্টারফেস বিল্ডারে কাজ করে। কোড থেকে এটি সেট করা কাজ করে না, কেবল শিরোনাম সেট করার পরিবর্তে আপনার পুরো ব্যাকবার্ট বাটন আইটেমটি সেট করতে হবে: নেভিগেশনআইটেম.ব্যাকবারবারটন আইটেম = ইউআইবারবারটন আইটেম (শিরোনাম: "", শৈলী: .প্লেইন, লক্ষ্য: শূন্য, অ্যাকশন: নীল)
লেজেক জাজি

82

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

প্রোগ্রামিয়ালি আপনি ব্যবহার করতে পারে

[self.navigationItem.backBarButtonItem setTitle:@" "];

যেখানে স্ব নিয়ামক যা আপনার কাঙ্ক্ষিত দেখুন নিয়ামক পাহাড় জমে বোঝায়।

এক্সকোড দেখুন নিয়ন্ত্রক নেভিগেশন আইটেম

আগে নেভিগেশন বার পরে নমুনা

আগে আগে

পরে পরে


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

11
আইওএস 9 / এক্সকোড 7.3 এ backBarButtonItemপ্রোগ্রামিমেটিকভাবে সেট করা কাজ করে না, তবে স্টোরিবোর্ডের মাধ্যমে সেটি নির্ধারণ করে।
স্কট গার্ডনার

@ স্কটগার্ডনার, backBarButtonItemপ্রোগ্রামিং আমার জন্য আইওএস 9 এ কাজ করে
সুরগ্যাচ

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

এক্সকোড 9.2 / আইওএস 11
রে হান্টার

82

আপনি এর UINavigationControllerDelegateমতো বাস্তবায়ন করতে পারেন :

পুরানো সুইফট

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    let item = UIBarButtonItem(title: " ", style: .Plain, target: nil, action: nil)
    viewController.navigationItem.backBarButtonItem = item
}

সুইফট 4.x

class MyNavigationController: UINavigationController, UINavigationControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        let item = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
        viewController.navigationItem.backBarButtonItem = item
    }
}

backBarButtonItemএটি nilডিফল্টরূপে হয় এবং এটি পরবর্তী ধাক্কা নিয়ামককে প্রভাবিত করে, সুতরাং আপনি এটি কেবলমাত্র সমস্ত নিয়ামকের জন্য সেট করে


6
ধন্যবাদ! 4 টি সদৃশ প্রশ্ন এবং কয়েক ডজন উত্তর দেখার পরে এটিই একমাত্র সমাধান যা (অন্য কোনও বিষয়কে গোলমেলে না ফেলে) কাজ করেছিল।
এপিকেট

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

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

মন্ত্রের মতো ছত্রাক।
Tounaobun

50

পিছনে বোতামের শিরোনাম সেট করা @""বা nilকাজ করবে না। আপনাকে পুরো বোতামটি খালি সেট করতে হবে (শিরোনাম বা চিত্র ছাড়াই):

উদ্দেশ্য গ

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]];

সুইফট

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

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


4
ধন্যবাদ, এটি কাজ করে! Self.navigationItem.backBarButtonItem = UIBarButtonItem (শূন্য শিরোনাম:: "", শৈলী: .Plain, লক্ষ্য: শূন্য, অ্যাকশন) দ্রুতগতি ইন
mostworld77

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

31

পরিস্থিতিগুলির জন্য যেখানে আপনার কাছে দুর্দান্ত নিয়ন্ত্রণের একটি দুর্দান্ত চুক্তি রয়েছে তার আর একটি সমাধান হ'ল UIAppearanceব্যাক বোতাম শিরোনামের পাঠ্যটি কার্যকরভাবে আড়াল করার জন্য একটি প্রক্সি ব্যবহার করা :

UIBarButtonItem *navBarButtonAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

[navBarButtonAppearance setTitleTextAttributes:@{
    NSFontAttributeName:            [UIFont systemFontOfSize:0.1],
    NSForegroundColorAttributeName: [UIColor clearColor] }
                                      forState:UIControlStateNormal];

এই সমাধানটি পাঠ্যটিকে একটি ছোট্ট স্পষ্ট বিন্দু হিসাবে ম্যানুয়ালি ব্যাক বোতামের শিরোনামটি সেট করার অনুরূপ হিসাবে রেন্ডার করবে @" " , এটি সমস্ত এনএভি বারের প্রভাবিত করে।

আমি এটিকে সমস্যার সাধারণ সমাধান হিসাবে প্রস্তাব দিচ্ছি না কারণ এটি সমস্ত নেভিগেশন বারের বোতামকে প্রভাবিত করে। এটি দৃষ্টান্তটি ফ্লিপ করে যাতে আপনি বাটন শিরোনামগুলি প্রদর্শন করার পরিবর্তে বেছে নেবেন আড়াল না to

শিরোনামগুলি কখন প্রদর্শিত হবে তা চয়ন করতে হয় প্রয়োজন অনুসারে ম্যানুয়ালি শিরোনাম পাঠ্যের বৈশিষ্ট্য পুনরুদ্ধার করুন বা এর একটি বিশেষায়িত সাবক্লাস তৈরি করুন UIBarButtonItem এটির (সম্ভবত অন্য একটি UIAppearanceপ্রক্সি সহ)।

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

(দ্রষ্টব্য: দীর্ঘ শিরোনাম যাতে কেন্দ্রের এনএভি বারের শিরোনামটি স্থানান্তরিত না করে তা নিশ্চিত করার জন্য পাঠ্যের রঙ পরিষ্কার হওয়া সত্ত্বেও ফন্টের আকারের পরিবর্তন প্রয়োজন)


আমার বাস্তবায়নের সবচেয়ে সহজ সমাধান ছিল। ধন্যবাদ
ট্রেভর প্যানহার্স

4
এটি কি কোনও বাম বারের বোতামের আইটেমগুলিকে আবৃত করে না যা পিছনে বোতাম নেই?
কেভিনল

4
হ্যাঁ, আমি যতটা উল্লেখ করেছি "এটি সমস্ত এনএভি বারের বোতামগুলিকে প্রভাবিত করে"
অ্যাডাম কাপলান

4
বাম / ডান বারের বোতামের আইটেমগুলি সহ এটি নেভিগেশন বারের অন্যান্য সমস্ত বোতামকে প্রভাবিত করা উচিত নয়?
ফায়োডর ভোলচিয়োক

হ্যাঁ, তিনি আরও ব্যাপক প্রয়োজন নির্দিষ্ট করেন নি specify
আদম কাপলান

30

ভিডডিলোড বা লোডভিউতে নিম্নলিখিত কোডটি যুক্ত করুন

self.navigationController.navigationBar.topItem.title = @"";  

আমি এটি আইওএস 9 এর সাথে আইফোন এবং আইপ্যাডে পরীক্ষা করেছি


20
এটি পূর্ববর্তী দর্শন নিয়ামকের শিরোনামটি পরিষ্কার করে না?
CalZone 19

6
ব্যবহার করবেন না কারণ এটি শেষ স্ক্রিনের শিরোনামটি সরিয়ে ফেলবে
এভায়া

4
আপনার যদি এখনকার ভিউ কন্ট্রোলার থেকে এটির প্রয়োজন হয় তবে পূর্ববর্তী ভিসি থেকে শিরোনামটি সরিয়ে এড়াতে আপনার বরং করা উচিত: নেভিগেশনকন্ট্রোলার? .বিভেশনবার্টটপ আইটেম? ক্রিয়া:
শূন্যস্থান

16

কোনও নেভিগেশন নিয়ামক দ্বারা তৈরি সমস্ত "পিছনে" বোতামগুলির কোনও পাঠ্য নেই তা করতে আপনি এই উদ্দেশ্য-সি বিভাগ যুক্ত করতে পারেন। আমি কেবল এটি আমার অ্যাপডেলিগেট.এম ফাইলটিতে যুক্ত করেছি।

@implementation UINavigationItem (Customization)

/**
 Removes text from all default back buttons so only the arrow or custom image shows up.
 */
-(UIBarButtonItem *)backBarButtonItem
{
    return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}

@end

পিএস - (সুইফট দিয়ে এই এক্সটেনশানটি কীভাবে কাজ করা যায় তা আমি জানি না, এতে অদ্ভুত ত্রুটি হয়েছিল।


এটি শিরোনামটি আড়াল না করে "পিছনে" শিরোনাম দেয়
রাজ আগ্রাগল

সত্যিই, overrideদ্রুত গতিতে এটি কিভাবে । খুব আকর্ষণীয় প্রশ্ন
আন্দ্রে গাগান

@ ট্রেডাইল এটি সেরা উত্তর।
aks.knit1108

@ আন্ড্রে গাগান, আমার উত্তরটি দেখুন
আবিরামি বালা

এটি আইওএস 9.0 - 10.3.3 এ কাজ করে তবে আইওএস 11+ এ কাজ করে না।
সিহাদ বেগোভিচ

15

আমি উপরে এবং নীচে কিছু চেষ্টা করেছি কিন্তু তারা কার্যকর হয়নি। এটি আমার পক্ষে কাজ করেছে:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.topItem?.title = ""
}

4
আপনার যদি এখনকার ভিউ কন্ট্রোলার থেকে এটির প্রয়োজন হয় তবে আগের ভিসি থেকে শিরোনামটি সরিয়ে এড়াতে আপনার বরং করা উচিত: নেভিগেশনকন্ট্রোলার? ক্রিয়াকলাপ: শূন্য)
লেসিজিক সাজারি

এটি আমার ক্ষেত্রে কাজ করে, আইওএস 14, এক্সকোড 12, ধন্যবাদ বস
তাই লে

12

কোনও পার্শ্ব-প্রতিক্রিয়া নিয়ে কাজ করে না এমন একমাত্র কাস্টম ব্যাক বোতাম তৈরি করা। যতক্ষণ না আপনি কোনও কাস্টম অ্যাকশন সরবরাহ করবেন না, এমনকি স্লাইড অঙ্গভঙ্গিও কাজ করে।

extension UIViewController {
func setupBackButton() {
    let customBackButton = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
    navigationItem.backBarButtonItem = customBackButton
}}

দুর্ভাগ্যক্রমে, আপনি যদি কোনও শিরোনাম না রাখার পিছনে সমস্ত ব্যাক বোতাম চান তবে আপনার সমস্ত দর্শনীয় নিয়ন্ত্রকদের এই কাস্টম ব্যাক বোতামটি সেটআপ করতে হবে: /

override func viewDidLoad() {
    super.viewDidLoad()

    setupBackButton()
}

আপনি শিরোনাম হিসাবে একটি শ্বেত স্পেস সেট করুন এবং খালি স্ট্রিং নয় এটি অত্যন্ত গুরুত্বপূর্ণ।


9

প্রোগ্রামটির ভিত্তিতে ব্যাকবটন থেকে পাঠ্য অপসারণ করতে কোডের নীচে ব্যবহৃত এটি xcode7 এবং উপরে রূপে কাজ করবে।

self.navicationController.navicationBar.topItem.title = @ "";

বা

স্টোরিবোর্ডগুলিতে ম্যানুয়াললি, ভিউ কন্ট্রোলারে নেভিগেশন বারটি নির্বাচন করুন এবং "" পিছনে বোতামের পাঠ্যে রাখুন।

এটি কাজ করবে। ধন্যবাদ


4
এটি একজন নেভিগেশন
আইটেমের

আমি আপনার উত্তরটি সম্পাদনা করেছি: self.navigationController?.navigationBar.topItem?.title = " "এক্সকোড 9 এ এবং কাজ করেছেন!
এমএইচএসফিশার

আপনার যদি এখনকার ভিউ কন্ট্রোলার থেকে এটির প্রয়োজন হয় তবে পূর্ববর্তী ভিসি থেকে শিরোনামটি সরিয়ে এড়াতে আপনার বরং করা উচিত: নেভিগেশনকন্ট্রোলার? .বিভেশনবার্টটপ আইটেম? ক্রিয়াকলাপ: শূন্য)
লেসিজিক সাজারি

8

বর্তমান উত্তরটি কাজ করছে না। আমি শিরোনাম পুরোপুরি মুছে ফেলতে চেয়েছিলাম , তবুও "পিছনে" পাঠ্যটি চলে যাচ্ছিল না।

পূর্ববর্তী ভিউ নিয়ন্ত্রকের কাছে ফিরে যান এবং এর শিরোনাম সম্পত্তি সেট করুন:

self.title = @" ";

কেবলমাত্র পূর্ববর্তী ভিউ কন্ট্রোলারের শিরোনাম না থাকলে কেবল কাজ করে


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

4
এছাড়াও, উদ্ধৃতিগুলির মধ্যে একটি স্থান অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন ।
ক্রিসহাজ

4
এটি আসলে ফাঁকা ছাড়াই আমার জন্য কাজ করে ; শুধু ভাল পুরানো খালি স্ট্রিং: @""
জেভ আইজেনবার্গ

4
@ জায়েইজেনবার্গ, যখন আমি প্রথম সমাধানটি প্রথম এক্সকোডে নিয়ে এসেছিলাম 5.. একটি স্থানের সাথে এটি কাজ করার একমাত্র উপায় ছিল, এই কারণেই আমি এটিকে নমুনা কোডটিতে অন্তর্ভুক্ত করেছি। এক্সকোড 6 আপডেট অবশ্যই এতে অন্তর্ভুক্ত থাকতে পারে। জেনে রাখা ভাল - thx
ChrisHaze

আমি আমার পন্থাটিও ব্যবহার করেছি, যা এখনও কাজ করছে এবং প্রকৃত পিছনের তীরটিও সরিয়ে ফেলেছে।
ক্রিসহাজ

5

বিকল্প উপায় - কাস্টম নেভিগেশনবার বর্গ ব্যবহার করুন।

class NavigationBar: UINavigationBar {

    var hideBackItem = true
    private let emptyTitle = ""

    override func layoutSubviews() {
        if let `topItem` = topItem,
            topItem.backBarButtonItem?.title != emptyTitle,
            hideBackItem {
            topItem.backBarButtonItem = UIBarButtonItem(title: emptyTitle, style: .plain, target: nil, action: nil)
        }

        super.layoutSubviews()
    }

}

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


4

স্থানের সাথে "" স্ট্রিংয়ে পূর্ববর্তী ভিসির শিরোনাম সেট করুন। এবং পিছনের বোতামের সাথে শিরোনাম একক স্পেস স্ট্রিংয়ের সাথে প্রতিস্থাপন করা হবে।

Self.title = " "

পিছনে টিপুন আবার ভিউইলঅপিয়ারে শিরোনামটি মূলটিকে পুনরায় সেট করুন।


4

NavigationControllerওভাররাইড করে এমন একটি কাস্টম ব্যবহার করুনpushViewController

class NavigationController: UINavigationController {  
  override func pushViewController(_ viewController: UIViewController, animated: Bool) {
    viewController.navigationItem.backBarButtonItem =
      UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
    super.pushViewController(viewController, animated: animated)
  }
}

4

ইতিমধ্যে প্রচুর উত্তর, বিষয়টিতে আমার দুটি সেন্ট এখানে। আমি এই পদ্ধতির সত্যিই দৃust়। সিগু করার আগে আপনার কেবল ভিউকন্ট্রোলারে এটি রাখা দরকার।

সুইফট 4:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}

4
হ্যাঁ! আপনাকে ধন্যবাদ :)
হিউজ

3

আমি এই পোস্টে সবকিছু চেষ্টা করেছি। একমাত্র কার্যকরী সমাধানটি হ'ল @ ভয়েডলেস

এখানে একই উত্তর কিন্তু আরও সম্পূর্ণ

class CustomNavigationController: UINavigationController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.delegate = self
    }
}


// MARK:UINavigationControllerDelegate
extension CustomNavigationController {
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
    }
}

3

এটি আইওএস 11 এর জন্য আমার রেজোলিউশন, আমি অ্যাপ্লিকেশনটিতে ইউআইবারবারটন আইটেমটির চেহারা পরিবর্তন করবডিডফিনিশ লঞ্চিং উইথঅ্যাপশনগুলি:

UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(-100, 0), for:UIBarMetrics.default)

আপনি ওয়াই অফসেট পরিবর্তন করতে পারবেন না, কারণ এটি আইওএস 11 এও ব্যাক বারের বোতামের অবস্থান পরিবর্তন করবে, তবে এটি আইওএস 10 এবং নীচে ঠিক আছে।


4
এটি কাজ করে তবে অ্যানিমেশনের সময় আপনি আগের শিরোনামটি বাম দিকে চলতে দেখতে পারেন। দেখতে কিছুটা বগি লাগছে।
জোনাথন

3

সুইফট ৩.১ আপনি ইউআইএনএভিগেশন কন্ট্রোলারের প্রতিনিধি পদ্ধতিটি প্রয়োগ করে এটি করতে পারেন।

func navigationController(_ navigationController: UINavigationController, 
                          willShow viewController: UIViewController, animated: Bool) {

    /** It'll hide the Title with back button only,
     ** we'll still get the back arrow image and default functionality.
     */
    let item = UIBarButtonItem(title: " ", style: .plain, target: nil, 
                               action: nil)
    viewController.navigationItem.backBarButtonItem = item
}

সেরা উত্তর!
এভিয়া

2

সুইফট 3 এ,

আপনি যদি বিশ্বব্যাপী সেটিংস সেট করেন

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

    // ..

    let BarButtonItemAppearance = UIBarButtonItem.appearance()
    BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)
    BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted)


    // ...

}

4
নোট করুন যে এটি আপনার অন্যান্য অ্যাপ্লিকেশনটিতে কেবল ব্যাক বোতাম নয়, অন্য যে কোনও বারের বোতামগুলির জন্য স্বচ্ছ রঙে পরিবর্তন করবে।
লেসেক জাজারি

2

যারা বিশ্বব্যাপী পিছনে বোতামের শিরোনামটি আড়াল করতে চান তাদের জন্য।

আপনি পাঁচমিশালী মদ্যবিশেষ করতে viewDidLoadএর UIViewControllerভালো।

+ (void)overrideBackButtonTitle {

    NSError *error;

    // I use `Aspects` for easier swizzling.

    [UIViewController aspect_hookSelector:@selector(viewDidLoad)
                              withOptions:AspectPositionBefore
                               usingBlock:^(id<AspectInfo> aspectInfo)
    {

        UIViewController *vc = (UIViewController *)aspectInfo.instance;

        // Check whether this class is my app's view controller or not.
        // We don't want to override this for Apple's view controllers,
        // or view controllers from external framework.

        NSString *className = NSStringFromClass([vc class]);
        Class class = [NSBundle.mainBundle classNamed:className];
        if (!class) {
           return;
        }

        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
        vc.navigationItem.backBarButtonItem = backButton;

    } error:&error];

    if (error) {
        NSLog(@"%s error: %@", __FUNCTION__, error.localizedDescription);
    }

}

ব্যবহার:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[self class] overrideBackButtonTitle];
    return YES;
}

1

আমি এটির সাথে লড়াই করছিলাম কারণ আমার একটি কাস্টম নেভিগেশন নিয়ামক ছিল। আমি আমার কাস্টম নেভিগেশন নিয়ামক শ্রেণিতে এই কোড সহ সমস্ত দর্শন নিয়ন্ত্রকদের পিছনে আইটেমের পাঠ্য সরাতে সক্ষম হয়েছি override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }

এটি এই কাস্টম নেভিগেশন নিয়ামক ব্যবহার করে পিছনে আইটেমের সমস্ত শিরোনাম সরিয়ে দেয়।


4
এর জন্য আপডেট করুন: এটি কাজ করে তবে লোড দেওয়ার ক্ষেত্রে একটি বিজোড় লেগ রয়েছে যা আমাকে বিরক্ত করে। আমি এখন এই 'লেটবার্টটন আইটেম অ্যাপিয়ারেন্স = ইউআইবারবারটন আইটেম.সাপ্পিয়ারেন্স () বারবটটনআইটেম এপ্রিয়েন্স.সেটটাইটেল টেক্সট অ্যাট্রিবিউটস ([এনএসএট্রিবিউটেড স্ট্রিংকি.ফোরগ্রাউন্ড কালার: ইউআইকিওলআর ক্লেয়ার], এর জন্য:। সাধারণ)' যুক্ত করেছি, এটি পুরোপুরি কাজ করছে!
এমি.আর

1

আপনি লক্ষ্য করে থাকেন তবে আইওএস 13 এবং পরে আপনি ব্যবহার করতে পারেন এই নতুন API থেকে বিশ্বব্যাপী ব্যাক বোতাম শিরোনাম লুকিয়ে

let backButtonAppearance = UIBarButtonItemAppearance()
backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]

UINavigationBar.appearance().standardAppearance.backButtonAppearance = backButtonAppearance
UINavigationBar.appearance().compactAppearance.backButtonAppearance = backButtonAppearance
UINavigationBar.appearance().scrollEdgeAppearance.backButtonAppearance = backButtonAppearance

4
এটি অনুকূল নয়। যদি কোনও ব্যবহারকারী স্পষ্ট পাঠ্যের সাহায্যে লেবেলটি ট্যাপ করে তবে পিছনের ক্রিয়াটি এখনও ট্রিগার করে।
dvdblk

0

আইওএস ১১-তে আমরা দেখতে পেলাম যে UIBarButtonItemউপস্থিতির পাঠ্য ফন্ট / রঙকে খুব সামান্য মান বা পরিষ্কার রঙে সেট করার ফলে অন্যান্য বার আইটেমগুলি অদৃশ্য হয়ে যাবে (সিস্টেমটি আর UIBarButton আইটেমটির শ্রেণি সম্মান করে না, এটি এটিকে রূপান্তর করবে_UIModernBarButton )। এছাড়াও অফস্ক্রিনে ব্যাক টেক্সটের অফসেট সেট করার ফলে ইন্টারেক্টিভ পপ চলাকালীন ফ্ল্যাশ হবে।

সুতরাং আমরা swizzled addSubView:

+ (void)load {
    if (@available(iOS 11, *)) {
        [NSClassFromString(@"_UIBackButtonContainerView")     jr_swizzleMethod:@selector(addSubview:) withMethod:@selector(MyiOS11BackButtonNoTextTrick_addSubview:) error:nil];
    }
}

- (void)MyiOS11BackButtonNoTextTrick_addSubview:(UIView *)view {
    view.alpha = 0;
    if ([view isKindOfClass:[UIButton class]]) {
        UIButton *button = (id)view;
        [button setTitle:@" " forState:UIControlStateNormal];
    }
    [self MyiOS11BackButtonNoTextTrick_addSubview:view];
}

0
-(void)setNavigationItems{
     UIBarButtonItem *leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"**Your title here**" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonClicked)];   
     self.navigationController.navigationBar.topItem.backBarButtonItem=leftBarButtonItem;
}
-(void)backButtonClicked{
    [self.navigationController popViewControllerAnimated:YES];
}

0

পিছনের পাঠ্যটি সর্বশেষ ভিউ কন্ট্রোলারের from থেকে আসে navigationItem.titleএবং navigationItem.titleস্বয়ংক্রিয়ভাবে সেট হয়ে থাকে self.title। সমস্যা সমাধানের সহজ উপায় হুক setTitle:sure নিশ্চিত করুনnavigationItem.title = @""

এই কোডটি AppDelegate.mরাখলে এটি ঠিক হয়ে যাবে。

    [UIViewController aspect_hookSelector:@selector(setTitle:)
                              withOptions:AspectPositionAfter
                               usingBlock:^(id<AspectInfo> aspectInfo, NSString *title) {
        UIViewController *vc = aspectInfo.instance;
        vc.navigationItem.titleView = ({
            UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
            titleLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
            titleLabel.text = title;
            titleLabel;
        });
        vc.navigationItem.title = @"";
    } error:NULL];

Https://www.jianshu.com/p/071bc50f1475(সরল চিনায়েসে আরও বিশদ


0

আমার সমাধান: - এক্সকোড: 10.2.1 - সুইফট: 5

  • অভিভাবক দর্শনার্থী:
    • self.title = ""
  • শিশু দর্শনার্থী:
    • self.navicationItem.title = ভিউকন্ট্রোলারের জন্য শিরোনাম সেট করতে "আপনার শিরোনাম" //

0

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

একটি খুব সহজ - যদিও সম্ভবত কিছুটা হ্যাকি - যদি আপনার কাস্টম ব্যাক বোতামের প্রয়োজন না হয় তবে প্রোগ্রাম্যিকভাবে এটি করার উপায় হ'ল ফন্টের আকারটি শূন্যের সমান সেট করা ভিউ কন্ট্রোলারে আপনি স্ট্যাকের উপরে চাপ দিচ্ছেন, এই জাতীয় কিছু বলছেন this ভিউডিডলড থেকে

private func setupNavBar() {
    let appearance = UINavigationBarAppearance()
    appearance.configureWithDefaultBackground()
    
    let backButtonAppearance = UIBarButtonItemAppearance()
    backButtonAppearance.normal.titleTextAttributes = [.font: UIFont(name: "Arial", size: 0)!]
    appearance.backButtonAppearance = backButtonAppearance

    navigationItem.standardAppearance = appearance
    navigationItem.scrollEdgeAppearance = appearance
    navigationItem.compactAppearance = appearance
}

-1

অবশেষে পুরো অ্যাপ্লিকেশনে ডিফল্ট ব্যাক পাঠ্য গোপন করার নিখুঁত সমাধান খুঁজে পেল।

কেবলমাত্র একটি স্বচ্ছ চিত্র যুক্ত করুন এবং আপনার অ্যাপডেলিজেটে নিম্নলিখিত কোড যুক্ত করুন।

UIBarButtonItem.appearance().setBackButtonBackgroundImage(#imageLiteral(resourceName: "transparent"), for: .normal, barMetrics: .default)

-2

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

    if
        let UIModernBarButton = NSClassFromString("_UIModernBarButton") as? UIButton.Type,
        let UIBackButtonContainerView = NSClassFromString("_UIBackButtonContainerView") as? UIView.Type {

        let backButton = UIModernBarButton.appearance(whenContainedInInstancesOf: [UIBackButtonContainerView.self])
        backButton.setTitleColor(.clear, for: .normal)
    }

এটি করার ফলে অ্যাপ্লিকেশন স্টোর পর্যালোচনাতে আপনার অ্যাপ্লিকেশনটিকে প্রত্যাখ্যান করা হতে পারে যেহেতু ইউআইএমডারনবার্ট বাটন এবং ইউআইব্যাকবটনকন্টেইনর ভিউ উভয়ই ব্যক্তিগত API API
গ্রুট

ধন্যবাদ @ গ্রুট, আপনার সতর্কতা যুক্ত করলেন।
প্যাট্রিক

-5

এটি আমার xamarin.forms কোড থেকে, ক্লাস থেকে প্রাপ্ত NavigationRenderer

NavigationBar.Items.FirstOrDefault().BackBarButtonItem = new UIBarButtonItem( "", UIBarButtonItemStyle.Plain, null);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.