কোনও আইওএস ইউআইবারবারটন আইটেমের শিরোনাম পাঠ্য অপসারণ করা হচ্ছে


198

আমি যা করতে চাই তা হ'ল UIBarButtonItemনেভিগেশন বারে কেবল নীল শেভ্রন রেখে ক এর 'পিছনে' বোতামটি থেকে পাঠ্যটি সরিয়ে ফেলা । মনে রাখবেন যে আমি আইওএস 7 এর জন্য বিকাশ করছি 7. আমি বেশ কয়েকটি পদ্ধতি চেষ্টা করেছি যার মধ্যে রয়েছে তবে সীমাবদ্ধ নয়:

এটি সেই চিত্রের পদ্ধতি যা আমি পছন্দ করি না (চিত্রটি বাইরে দেখায়):

UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;

আমি অন্য একটি পদ্ধতি চেষ্টা করেছিলাম এটি হ'ল, যা কেবল কার্যকর হয় না (কিছুই প্রদর্শিত হয়নি):

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;

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

ধন্যবাদ।


এই উত্তরটি তাকান stackoverflow.com/a/20300577/1589731
ayalcinkaya

আপনার প্রয়োজনীয়তাটি আপনি কেন চিত্র গ্রহণ করবেন না? এবং এটিকে বামবার বাটন আইটেমে উল্লেখ করুন।
বিশাল শর্মা

আমি ছবি পদ্ধতিটি ব্যবহার না করার কারণটি হ'ল ১. পিছনের বোতামটির একটি নিখুঁত চিত্র পাওয়া খুব শক্ত এবং ২ 2. চিত্রটির সাথে কিছুটা মিস্যালাইনমেন্ট হবে এবং এটি প্রাকৃতিক দেখাচ্ছে না, এবং এই কারণেই কীভাবে এটি স্থানীয়ভাবে সম্পাদন করতে হয় তার জন্য আমি স্ট্যাকওভারফ্লোতে গিয়েছিলাম।
পান জিয়্যু

উত্তর:


198
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-60, -60)
                                                         forBarMetrics:UIBarMetricsDefault];

তারপরে আপনি পিছনে বোতাম আইটেমের শিরোনাম সরাতে পারেন।

আপনি যদি স্টোরিবোর্ড ব্যবহার করেন তবে স্থানের সাথে নেভিগেশন বৈশিষ্ট্য পরিদর্শক ব্যাক বাটন সেট করতে পারেন।


95
বড় শিরোনামে একটি সমস্যা রয়েছে: সেগুলি কেন্দ্রিক নয় তবে ডানদিকে ঠেলাঠেলি করা হচ্ছে, যদি পিছনের বোতামের পাঠ্যটি এখনও থাকে
Sonxurxo

11
ব্যবহারকারী "অ্যাক্সেসযোগ্যতা - বোতামের আকার" চালু করে থাকলে এটি কাজ করে না
মিকেল বার্টলেট

22
আমি মনে করি এটি একটি আরও ভাল উত্তর:[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
বেনজামিন

19
এতে যাদু সংখ্যার সাথে যে কোনও সমাধান করা খারাপ ধারণা। অটোলেআউট, আকারের শ্রেণি, অ্যাক্সেসিবিলিটি বৈশিষ্ট্য ইত্যাদির দিকে ধাক্কা দিয়ে .. এই জাতীয় ধ্রুবক মানগুলি আপনাকে কামড়তে বাধ্য।
মাইকেল পিটারসন 21

3
বেঞ্জামিনের মন্তব্যে উন্নতি করতে, আপনার UIControlStateHighlighted
এটিও

411

কোনও ভিউ কন্ট্রোলারের শিরোনামের ব্যবহারটি পরিবর্তন না করে পিছনে বোতামের শিরোনাম সেট করতে:

উদ্দেশ্য গ:

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

সুইফট:

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

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


1
আমি জানি না কেন অন্য উত্তরটিকে সঠিক হিসাবে চিহ্নিত করা হয়েছে, এটি কেবল শিরোনামটি সরিয়ে দিচ্ছে যাতে পিছনের বোতামটি ডেন্টের দেখানোর জন্য একটি "শিরোনাম" রয়েছে, তবে এটি সঠিক পদ্ধতির দিকে মোটেই যায় না! এই এক সঠিক উত্তর হওয়া উচিত।
পাচ

8
এছাড়াও যে কেউ সুইফ্ট ব্যবহার করছেন, এটি নেভিগেশনআইটেম.ব্যাকবারবারটন আইটেম = ইউআইবারবারটন আইটেম (শিরোনাম: "", শৈলী: .প্লেইন, লক্ষ্য: শূন্য, ক্রিয়া: শূন্য)। ওবজ-সি থেকে সুইফটে রূপান্তর করা কঠিন নয়, তবে আমি আপনাকে ঝামেলা বাঁচিয়ে দেব
জোয়েট

15
@ বেনজামিনপিট আপনি কি ইউআইভিউউকন্ট্রোলারে ফোন করছেন যে আপনি যদি পিছনের বোতামটি চাপেন তবে আপনি দেখতে পাচ্ছেন? পিছনের বোতামটি প্রদর্শন করে এমন ইউআইভিউকন্ট্রোলার নয়।
ডোনালিয়া

2
কি সুন্দর সমাধান! ধন্যবাদ। অফসেট জিনিসটি করা ঠিক ঠিক মনে হয়নি।
hyd00

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

128

আপনি যদি স্টোরিবোর্ডগুলি ব্যবহার করছেন তবে আপনি ভিউ Attributes Inspectorকন্ট্রোলারের Navigation Item(ক্লিক করুন Navigation Bar) যেতে পারেন এবং Back Buttonসম্পত্তিটিকে "" (একটি স্থানের অক্ষর) এ সেট করতে পারেন। এটি শেভরনকে দৃশ্যমান রেখে এক পিছনের বাটনের শিরোনামটিকে একটি স্থানের অক্ষরে সেট করবে। কোড নিয়ে গণ্ডগোল করার দরকার নেই।

উদাহরণ চিত্র

নোট করুন যে এটি পিছনে বোতামটির জন্যBack Button শিরোনাম সেট করবে যা এই ভিউ কন্ট্রোলারের উপরের দিকে চাপ দেওয়া হয়েছিল তার থেকে সিগ করবে , এটি Back Buttonএই নিয়ামকের ভিতরে প্রদর্শিত হবে না!


10
আমি আশা করি আমি এটিকে আরও উঁচু করে তুলতে পারি: "নোট করুন যে এটি ব্যাক বোতামটির জন্য ব্যাক বোতামের শিরোনাম সেট করবে যা এই ভিউ কন্ট্রোলারের সাথে সিগ করবে যে তার উপরে চাপ দেওয়া হয়েছিল, এটি এর ভিতরে প্রদর্শিত হবে না, ব্যাক বোতামটির জন্য প্রদর্শিত হবে না কন্ট্রোলার! "
জয়সন লেন

121

এটি কোনও পাঠ্য ছাড়াই কেবল 'পিছনে' শেভ্রনটি প্রদর্শন করতে আমার পক্ষে কাজ করে:

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

viewDidLoadনেভিগেশন বার উপস্থাপন করা ভিউ কন্ট্রোলারের মধ্যে এই সম্পত্তিটি সেট করুন এবং এটি কৌশলটি করবে।

দ্রষ্টব্য: আমি এটি কেবল iOS 7 এ পরীক্ষা করেছি, যা প্রশ্নের ক্ষেত্রের মধ্যে রয়েছে।


33
এটি নেভিগেশন বারের মাঝখানে শিরোনাম লেবেল অপসারণ করার একটি পার্শ্ব প্রতিক্রিয়া রয়েছে।
পিউনার

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

5
আমি কোডটির এই অংশটি -viewDidLoadভিসির কাছে সরিয়ে নিয়েছি যে আমি ফিরে পাঠ্যটি চাই না। যাইহোক, পরে আমি যা জানতে পেরেছিলাম তা navigationControllerহল শিরোনাম পাঠ্যটি থেকে যখন আমি দ্বিতীয় উপাচার্যকে পপ করি তখন তাড়াতাড়ি নয়। আমি অনুমান করি যে কোনও ভিডিও এটির আরও ভালভাবে চিত্রিত করবে তাই এখানে এটি রয়েছে: লিঙ্ক
প্যান জিয়্যু

1
এটি সেরা উত্তর নয়, অনুগ্রহ করে অ্যান্ডিলিওওর জবাবটি দেখুন: [[UIBarButton আইটেম উপস্থিতি] সেটব্যাকবটনটাইটেলপজিশন অ্যাডজাস্টমেন্ট: UIOffsetMake (0, -60) বার মেট্রিক্সের জন্য: UIBarMetricsDefault];
lmnbeyond

1
এটি অ্যাপলের ডকুমেন্টেশন অনুসারে সঠিক উত্তর: "যখন রিসিভারটি নেভিগেশন আইটেমের স্ট্যাকের উপরে থাকে এবং শীর্ষে থেকে দ্বিতীয় স্থানে থাকে - অন্য কথায়, এর ভিউ কন্ট্রোলার এই মতামত পরিচালনা করে যে ব্যবহারকারী এই সম্পত্তির মান back এ আবার নেভিগেট করবে views সর্বাধিক সর্বাধিক নেভিগেশন বারের পিছনের বোতামের জন্য ব্যবহৃত হয় this
রাফেল অলিভিরা

27

আপনি যখন বোতামটির শিরোনাম সেট করছেন, @ "" এর পরিবর্তে @ "" ব্যবহার করুন।

--EDIT--

আপনি অন্যান্য স্ট্রিং চেষ্টা করে কি কিছু পরিবর্তন হয়? আমি নিম্নলিখিত কোডটি সফলভাবে ব্যবহার করছি:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:backString style:UIBarButtonItemStyleDone target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

ব্যাকস্ট্রিং একটি পরিবর্তনশীল যা আমি আইওএস 7 বা তার চেয়ে কম সংস্করণে আছি কিনা তার উপর নির্ভর করে @ "" বা @ "পিছনে" সেট করা আছে।

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


হুম, আইওএস 7 এর পরিবর্তন হবে বলে মনে হচ্ছে না। এটি শিরোনাম হিসাবে "পিছনে" ব্যবহার করে চলেছে। আমি যদি এর setLeftBarButtonItem:backButtonপরিবর্তে রাখি তবে কিছুই থাকবে না।
পান Ziyue

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

27

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

কখনও কখনও প্রসঙ্গে জিনিসগুলি দেখতে সহায়তা করে। এখানে একটি ন্যূনতম প্রকল্প যা "পিছনে" পাঠ্যটি গোপন করে তবে তীরটি দেখায়।

স্টোরিবোর্ড

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

"শো সেকেন্ড ভিউ কন্ট্রোলার" বাটন থেকে দ্বিতীয় দর্শন নিয়ন্ত্রকের কাছে একটি শো সেগ রয়েছে।

আমি দ্বিতীয় ভিউ নিয়ন্ত্রকের সাথে একটি নেভিগেশন আইটেমও যুক্ত করেছি যাতে এটির শিরোনাম থাকে। এটি alচ্ছিক। এটি পিছনে বোতামটি প্রভাবিত করে না।

কোড

FirstViewController.swift

import UIKit
class FirstViewController: UIViewController {

    @IBAction func showSecondViewControllerButtonTapped(sender: UIButton) {

        // hide the back button text
        navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
    }
}

SecondViewController.swift

import UIKit
class SecondViewController: UIViewController {
    // Nothing at all needed here
}

বিকল্প পদ্ধতি (কেবলমাত্র আইবি, কোনও কোড নেই)

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

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


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

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

1
আপনি টপ আইটেমের পরিবর্তে ব্যাক আইটেম ব্যবহার করতে পারেন। টপ আইটেম শিরোনামটি আড়াল করবে, যখন ব্যাক আইটেমটি পিছনের বোতামের শিরোনামটি আড়াল করবে।
রবি ওঝা

2
নেভিগেশনকন্ট্রোলারের বাচ্চাদের স্ট্যাকের জন্য চাইল্ডভিউ কনট্রোলার 2+ গভীরতায় থাকলে এটিই একমাত্র সমাধান
নাথানিয়েল

2
এটি পূর্ববর্তী ভিউ নিয়ন্ত্রকের শিরোনামও সরিয়ে ফেলবে। বেশিরভাগ ক্ষেত্রে, এটি স্তন্যপান করতে
চলেছে

11

আইওএস 7-এ, অ্যাপল ইউআইএনএভিগেশনবারে, 'ব্যাক ইন্ডিসিটর ট্র্যান্সিশনমাস্কিমেজ' এবং 'ব্যাকআইন্ডিসিটারআইমেজ' তে দুটি নতুন বৈশিষ্ট্য উপস্থাপন করেছে।

কেবল একবার কল করে:

[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"your_image"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"your_image_mask"]];

এটি কী উইন্ডোর রঙিন রঙের উত্তরাধিকার সূত্রে ডিফল্ট শেভরন গ্লাইফের পরিবর্তে একটি কাস্টম চিত্র সরবরাহ করবে।

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


টিন্টের রঙটি [[ইউআইএনএভিভিশনবার উপস্থিতি] সেটটিন্ট কালার: [ইউআইকিওলোর হোয়াইট কালার]] সামঞ্জস্য করতে;
মাজন কাসের

10

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


10

এটি iOS10 এ আমার জন্য কাজ করেছিল। ভিউ কন্ট্রোলারের ভিউডিডলড থেকে এটিকে কল করুন।

self.navigationController?.navigationBar.topItem?.title = ""

6

এই সমস্যাটির সহজ সমাধান, আইওএস 7 এবং পাশাপাশি 6 এ কাজ করা, দ্য ডিডলয়েডে কাস্টম শিরোনাম দৃশ্য সেট করা:

- (void)viewDidLoad {

    [super viewDidLoad];

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    titleLabel.text = self.title;
    titleLabel.backgroundColor = [UIColor clearColor];

    [titleLabel sizeToFit];

    self.navigationItem.titleView = titleLabel;
}

তারপরে, ভিউউইল অ্যাপে: আপনি নিরাপদে কল করতে পারেন

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

আপনার শিরোনাম দর্শনটি কাস্টম দর্শন বলে, নেভিগেশন স্ট্যাকের দিকে ফিরে যাওয়ার সময় ওভাররাইট করা হবে না।


আমার কেবল কোডটির উত্তরোত্তর অংশের দরকার, খালি ইউআইএলবেল নয়। আমি [self.navigationItem.backBarButtonItem setTitle:@" "];ভিউ উইলএপিয়ারে কল দিচ্ছিলাম তবে এটি কোনও মডেল ভিউ বরখাস্ত করার পরে উপস্থাপিত ভিউগুলিতে কাজ করছে না।
Diziet

6

আসলে আপনি কেবল একটি কৌশল দ্বারা এটি করতে পারেন:

UINavigationBarক্লাসটি ওভাররাইড করুন এবং কোডের এই লাইনটি যুক্ত করুন:

- (void)layoutSubviews{
    self.backItem.title = @"";
    [super layoutSubviews];
}

তারপরে আপনার UINavigationControllerএই কাস্টম ইউআইএনএভিগেশনবার ক্লাস .. ইত্যাদি দিয়ে আরম্ভ করুন etc.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];

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


এটি আমার পক্ষে কাজ করেছে। যদিও মনে হয় আইওএস 7-তে পুশ অ্যানিমেশনটিতে কিছুটা তোলপাড় রয়েছে: শিরোনামটি ব্যাক বোতামের জন্য জায়গা তৈরি করবে বলে মনে হচ্ছে কেননা কিছুই নেই।
জেকেল

হ্যাঁ, সরাসরি নেভিগেশনআইটেম.টাইটেল সেট করার পরিবর্তে কাস্টম শিরোনামভিউ ব্যবহার করে দেখুন। আমি মনে করি এটি আপনার সমস্যার সমাধান করা উচিত।
rordulu

এই সমাধানটি বিশ্বব্যাপী প্রতিটি নেভিগেশন বারের জন্য উপ-শ্রেণীর জন্য দুর্দান্ত কারণ। ধন্যবাদ
ইটিসপাপা

5

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

var backItemTitle:String?

override func viewDidLoad() {
    super.viewDidLoad()

    //store the original title
    backItemTitle = self.navigationController?.navigationBar.topItem?.title

    //remove the title for the back button
    navigationController?.navigationBar.topItem?.title = ""
}

override func willMoveToParentViewController(parent: UIViewController?) {
    super.willMoveToParentViewController(parent)
    if parent == nil {

        //restore the orignal title
        navigationController?.navigationBar.backItem?.title = backItemTitle
    }
}

মূল উত্তরের সমস্যাটি হ'ল আপনি যখন এটিতে ফিরে যান তখন এটি নিয়ামক থেকে শিরোনামটি সরিয়ে দেয়। ভিউউইলডিস্পিয়ারে শিরোনামটি পুনরায় সেট করার চেষ্টাটি রূপান্তর প্রক্রিয়াতে খুব দেরী হয়েছে; এটি সুন্দরভাবে অ্যানিমেটেড না করে শিরোনামটি পিছনে ফিরে আসে। তবে উইলমোভটোপারেন্টভিউ কনট্রোলার শীঘ্রই ঘটে এবং সঠিক আচরণের অনুমতি দেয়।

ক্যাভেট: আমি এটি কেবলমাত্র একটি সাধারণ ইউআইএনএভিগেশন কন্ট্রোলার পুশ / পপ দিয়ে পরীক্ষা করেছি। অন্যান্য পরিস্থিতিতে অতিরিক্ত অপ্রত্যাশিত আচরণ থাকতে পারে।


4

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    self.navigationItem.title = @" ";
}

এটির সাথে একমাত্র সমস্যাটি হ'ল আপনি যখন পিছনের বোতামটি হিট করবেন তখন আপনার আগের দর্শনটির কোনও শিরোনাম থাকবে না, তাই আপনি এটিকে আবার ভিউউইল অ্যাপয়ারে যুক্ত করতে পারেন:

- (void)viewWillAppear:(BOOL)animated{
    self.navigationItem.title = @"First View Title";
}

আমি এই সমাধানটি খুব পছন্দ করি না তবে এটি কাজ করে এবং আমি এটি করার অন্য কোনও উপায় খুঁজে পাই না।



3

কোন উত্তর নেই আমাকে সাহায্য করেছে। তবে একটি কৌশলটি করেছে - আমি দৃশ্যের আগে ধাক্কা দেওয়া ভিউ কন্ট্রোলারের শিরোনামটি সরিয়ে দিয়েছি (যেখানে পিছনের বোতামটি চলছে) push

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

উপর viewWillAppearঠেলাঠেলি দেখুন, আমি মূল শিরোনাম ফিরে স্থাপিত।


1
হুঁ, এই কৌশলটি কাজ করে। তবে দেখে মনে হচ্ছে ওখানকার শব্দগুলি মাঝে মাঝে ঝাঁকুনির মতো হবে। খুব ভাল কাজ নয়, তবুও একটি ভাল। +1
প্যান জিয়্যু

3
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor clearColor],UITextAttributeTextColor,
                                nil];

    [[UIBarButtonItem appearance] setTitleTextAttributes:attributes
                                                forState:UIControlStateNormal];

আমারও একই সমস্যা ছিল এবং আমি এটি এইভাবে করেছিলাম।

--EDIT--

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

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor clearColor],UITextAttributeTextColor,
                                nil];

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:attributes
                                                forState:UIControlStateNormal];

1
এটি আমার পক্ষে কাজ করে তবে পিছনে আঘাত করার সময় আপনি সংক্ষিপ্তভাবে পাঠটি দেখতে পারবেন।
Diziet

3
@ ডিজেট রাজ্যের UIControlStateHighlightedজন্যও একই যোগ করার চেষ্টা করুন
কোডারপাগ

2
এটি সূক্ষ্মভাবে কাজ করে, তবে এটি অন্যান্য সমস্ত বোতামগুলিও "গোপন করে", কেবল ব্যাক বোতামটি নয় ... এটি সমাধান করার জন্য কোনও ধারণা?
আরকম্যান 21

3

এটি সাবক্লাস ব্যবহার navigationControllerকরে "পিছনে" সরিয়ে দেয়।

আমি এটি অ্যাপ্লিকেশনটির মাধ্যমে স্থায়ীভাবে এটি অপসারণ করতে ব্যবহার করছি।

//.h
@interface OPCustomNavigationController : UINavigationController 

@end

//.m
@implementation OPCustomNavigationController

- (void)awakeFromNib
{
    [self backButtonUIOverride:YES];
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [self backButtonUIOverride:NO];

    [super pushViewController:viewController animated:animated];
}

- (void)backButtonUIOverride:(BOOL)isRoot
{
    if (!self.viewControllers.count)
        return;

    UIViewController *viewController;

    if (isRoot)
    {
        viewController = self.viewControllers.firstObject;
    }
    else
    {
        int previousIndex = self.viewControllers.count - 1;

        viewController = [self.viewControllers objectAtIndex:previousIndex];
    }

    viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@""
                                                                                       style:UIBarButtonItemStylePlain
                                                                                      target:nil
                                                                                      action:nil];
}

@end

3
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefaultPrompt];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(10.0, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],
                                                               NSFontAttributeName:[UIFont systemFontOfSize:1]}
                                                    forState:UIControlStateNormal];

1
দয়া করে আপনার উত্তরে ব্যাখ্যা যুক্ত করুন।
অ্যালেক্স

1 নেভিগেশন বারের মতো একই রঙ করুন 2 টেক্সট আকারটিকে ছোট ছোট করে শিরোনামটি
বিল জি

আমি আপনার উত্তরটি পর্যালোচনা করেছি, আপনার উত্তরটি সর্বদা সমর্থন করা উচিত।
অ্যালেক্স

2

নেভিগেশন বারের পিছনে বোতামের শিরোনামটি লুকান

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @""; // blank or any other title
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;

2

এখানে আমি যা করছি তা এখানে যা পিছনে বোতামের শিরোনাম সরানো সহজ

override func viewDidLoad() {
    super.viewDidLoad()
    navigationController?.navigationBar?.backItem?.title = ""
}

2

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

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

1

আপনি এটি ব্যবহার করতে পারেন:

UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;

[temporaryBarButtonItem release];

এটি আমার পক্ষে কাজ করে


1
case : <Back as <

override func viewWillAppear(animated: Bool) {
navigationController!.navigationBar.topItem!.title = ""
    }

1

বিশ্বব্যাপী নিখুঁত সমাধান

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

    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal)
    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted)

    return true
}

সকলের সমাধানের সমাধান ... এটি আগের মতো স্থানও ব্যবহার করে ... এটি কেবল স্বচ্ছ হয়ে যায় ...
লাসলো

এটি অ্যাপ্লিকেশনটির সমস্ত UIBarButtonItems থেকে পাঠ্যটি সরিয়ে ফেলেছে
মিকেল সানচেজ

1

আমি UINavigationControllerএটির জন্য একটি কাস্টম ক্লাস তৈরি করেছি এবং এটি আমার অ্যাপ্লিকেশনের সমস্ত নেভিগেশন কন্ট্রোলারে প্রয়োগ করি। এই কাস্টম UINavigationControllerশ্রেণীর অভ্যন্তরে আমি একবার ভিউ লোড করে UINavigationBarপ্রতিনিধিকে সেট করি self

- (void)viewDidLoad {
    self.navigationBar.delegate = self;
}

তারপরে আমি প্রতিনিধি পদ্ধতিটি বাস্তবায়ন করি:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item {

    // This will clear the title of the previous view controller
    // so the back button is always just a back chevron without a title
    if (self.viewControllers.count > 1) {
        UIViewController *previousViewController = [self.viewControllers objectAtIndex:(self.viewControllers.count - 2)];
        previousViewController.title = @"";
    }
    return YES;
}

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


1

ব্যাক বোতাম নেভিগেশন আইটেম কাজের জন্য কেবল একটি একক স্থান প্রবেশ করানো !!


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

1

আমার মতো যদি আপনি পরিবর্তে একটি কাস্টম ভিউ ব্যবহার করেন UINavigationBarএবং আপনি পিছনের বোতামটি আটকে থাকেন তবে আপনাকে কিছুটা কাজ করতে হবে যা কিছুটা ludালু মনে করে।

[self.navigationController.navigationBar setHidden:NO];
self.navigationController.navigationBar.topItem.title = @"";
[self.navigationController.navigationBar setHidden:YES];

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


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

1

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

সম্পাদনা করুন:

.h ফাইল

#import <UIKit/UIKit.h>

@interface UINavigationController (HideBackTitle)
extern void PJSwizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector);

@end

.m ফাইল

#import "UINavigationController+HideBackTitle.h"
#import <objc/runtime.h>


@implementation UINavigationController (HideBackTitle)

+ (void)load {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        PJSwizzleMethod([self class],
                    @selector(pushViewController:animated:),
                    @selector(pj_pushViewController:animated:));
    });
}

- (void)pj_pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    UIViewController *disappearingViewController =  self.viewControllers.lastObject;
    if (disappearingViewController) {
        disappearingViewController.navigationItem.backBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
    }
    if (!disappearingViewController) {
        return [self pj_pushViewController:viewController animated:animated];
    }
    return [self pj_pushViewController:viewController animated:animated];
}



@end

void PJSwizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector)
{
    Method originalMethod = class_getInstanceMethod(cls, originalSelector);
    Method swizzledMethod = class_getInstanceMethod(cls, swizzledSelector);

    BOOL didAddMethod =
    class_addMethod(cls,
                originalSelector,
                method_getImplementation(swizzledMethod),
                method_getTypeEncoding(swizzledMethod));

    if (didAddMethod) {
        class_replaceMethod(cls,
                        swizzledSelector,
                        method_getImplementation(originalMethod),
                        method_getTypeEncoding(originalMethod));
    } else {
        method_exchangeImplementations(originalMethod, swizzledMethod);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.