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


158

আপনি কি জানেন যে কীভাবে কোনও ইউআইএনএভিগেশন কন্ট্রোলারের 'পিছনে' বোতামটি লুকানো যায়? এছাড়াও, কীভাবে এটি ফিরে দেখানো যায়, তবে আমার ধারণা এটি একে লুকিয়ে রাখার মতোই ...

ঠিক যেমন ইমেলগুলি দেখার সময় আপনি 'সম্পাদনা' টিপুন তখন মেল অ্যাপ্লিকেশনটি আইফোনে যেমন হয়।

উত্তর:


313

আমি এই উত্তরটি সন্ধান করেছিলাম, একটি নিয়ামক এটি ব্যবহার করুন:

[self.navigationItem setHidesBackButton:YES animated:YES];

এবং এটি পুনরুদ্ধার করতে:

[self.navigationItem setHidesBackButton:NO animated:YES];

-

[হালনাগাদ]

সুইফট 3.0:

self.navigationItem.setHidesBackButton(true, animated:true)

18
আমার ভুল থেকেও শিখুন: আপনাকে setHidesBackButton:নেভিগেশনকন্ট্রোলারের মধ্যে ন্যাভিগেশন আইটেমটি চাপ দেওয়ার আগে আপনাকে কল করতে হবে।
কোডিংফ্রেন্ড 1

কেন আগে? আপনি যদি কোনও ভিউকন্ট্রোলারকে চাপ দিতে চান এবং তারপরে ব্যবহারকারীকে ফিরে যেতে বাধা দিতে পিছনে বোতামটি লুকান তবে কী হবে?
ব্যবহারকারী4951

1
@ কোডিংফ্রেন্ড - আমি দেখতে পেয়েছি যে আপনি ব্যাকবটনটি প্রদর্শন করতে চান না এমন দৃশ্যের ভিডিডিয়েড ম্যাসেজ হ্যান্ডলারটিতে সেটহাইডসব্যাকবটন রাখলে এটিও কাজ করে।
আনন

2
এর জন্য সর্বোত্তম ইভেন্ট হ'ল এটি viewWillAppear:animatedলুকানো এবং viewWillDisappear:animatedপুনরুদ্ধার করা।
পেচার

সবশেষে অ্যাপল এক্সকোডে কোনও পরিবর্তন হয়নি n't 5 বছরেরও বেশি পরে এবং এই উত্তরটি এখনও দুর্দান্ত কাজ করে।
অ্যাপ দেব গাই

27

এই কোড যুক্ত করুন

[self.navigationItem setHidesBackButton:YES];

22

পিছনের বোতামটি মুছে ফেলার পাশাপাশি (ইতিমধ্যে প্রস্তাবিত পদ্ধতিগুলি ব্যবহার করে) ব্যবহারকারী ভুলে যাবেন না এখনও আইওএস 7 এবং তারপরে বাম থেকে ডানদিকে সোয়াইপ অঙ্গভঙ্গি দিয়ে পূর্বের পর্দায় 'পপ' করতে পারবেন।

এটি নিষ্ক্রিয় করতে (যখন উপযুক্ত হবে), নিম্নলিখিতগুলি প্রয়োগ করুন (উদাহরণস্বরূপ দ্যডলিডে):

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
     self.navigationController.interactivePopGestureRecognizer.enabled = NO;

1
ম্যাট - আপনার জন্য +1. এই নোটটি যুক্ত করার জন্য ধন্যবাদ। খুব দরকারী. যে কেউ পপ অঙ্গভঙ্গি কীভাবে কাজ করে তা ভাবছেন, ম্যাট এখানে কী বর্ণনা করছেন তা পুনরায় তৈরি করতে আপনার নেভিগেশন বারে বাম থেকে ডানে সোয়াইপ করুন। উপরের কোডটি যুক্ত করা ব্যবহারকারীর যেখানে অন্তর্ভুক্ত রয়েছে তা ভিউ কন্ট্রোলারে এটি করতে বাধা দেয়।
noobzilla

18

কেবল বিদ্যমান উত্তরগুলি স্পষ্ট করার জন্য: hidesBackButtonসম্পত্তিটি সঠিক উত্তর, তবে কী কী জবাব দেয় তা অনেক উত্তরেই এটি পরিষ্কার নয় self। মূলত আপনার self.navigationItem.hidesBackButton = YESসেই ভিউ কন্ট্রোলারে সেট করা উচিত যা উপরের দিকে ধাক্কা পেতে চলেছে (বা সবেমাত্র ধাক্কা খেল) UINavigationController

অন্য কথায়, বলুন আমার একটি UINavigationControllerনাম আছে myNavController। আমি এটিতে একটি নতুন মতামত রাখতে চাই এবং আমি যখন চাই না তখন পিছনের বোতামটি আর দেখাতে চাই না। আমি এরকম কিছু করতে পারি:

UIViewController *newVC = [[UIViewController alloc] init];
//presumably would do some stuff here to set up the new view controller
newVC.navigationItem.hidesBackButton = YES;
[myNavController pushViewController:newVC animated:YES];

কোড শেষ হয়ে গেলে দর্শনটি নিয়ন্ত্রণ করে newVC এখন প্রদর্শিত হওয়া উচিত এবং কোনও পিছনের বোতামটি দৃশ্যমান হওয়া উচিত নয়।


আমি প্রথম নেভিগেশনকন্ট্রোলআর নেভিগেশন আইটেমটি করার সময় আমার ঠিক কী দরকার ছিল। ধন্যবাদ ম্যাট
চকি

16

শর্তসাপেক্ষে পিছনে বোতামটি লুকানোর এবং দেখানোর জন্য আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

-(void)viewDidAppear:(BOOL)animated
{
    if ([tempAry count]==0)
    {
        [self.navigationItem setHidesBackButton:YES animated:YES];
    }
    else
    {
        [self.navigationItem setHidesBackButton:NO animated:YES];
    }
    [super viewDidAppear:animated];
} 

দ্রষ্টব্য: কিছু ক্ষেত্রে, আপনি ভিউউইল অ্যাপের পরিবর্তে ভিউডিড অ্যাপের পদ্ধতিতে রেখে দিতে হবে যেমন: আপনি যখন পরের শ্রেণির অ্যারেটিকে পূর্ববর্তী শ্রেণিতে আপডেট করছেন এবং তারপরে উপরের শ্রেণিতে শর্তটি পরীক্ষা করছেন।


11

সুইফট আইওএস (আমি নিম্নলিখিত ব্যবহার করেছি)

// hide back button
        self.navigationItem.setHidesBackButton(true, animated: false)

// pgrm mark ----- ------

    // hide the back button for this view controller

    override func setEditing(editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)

        self.navigationItem.setHidesBackButton(editing, animated: animated)

    }// end setEditing

10

সেটাইডসব্যাকটন কোনও কারণে আমার পক্ষে কাজ করেনি

আমি এইভাবে ব্যবহার করেছি ->

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)]] ;

ধন্যবাদ .. আমার একই সমস্যা ছিল যেখানে সেটহাইডসব্যাকবটন: হ্যাঁ কাজ করেনি। তবে এই সমাধানটি আইওএস 7 এর জন্য কাজ করেছে
মোসিংজ

7

অ্যাপল ডকুমেন্টেশনগুলি সর্বদা সরল সমস্যার জন্য ব্যবহার করুন তারা আরও সোজাসাপ্ট এবং লাইটওয়েট :)

এখানে সুইফট ৩.০ এর বাক্য গঠন রয়েছে:

self.navigationItem.setHidesBackButton(true, animated:true)

উল্লেখ

https://developer.apple.com/reference/uikit/uinavigationitem#//apple_ref/occ/instm/UINavigationItem/setHidesBackButton:animated:


অপসারণ ;
সুইফটে

6

আমার ক্ষেত্রে আমার বর্তমান উত্তরগুলির সাথে কয়েকটি সমস্যা ছিল:

  • ভিডিডিএলএড / ভিউউইলঅ্যাপের ভিতরে কেবল ফিরে আইকনটি লুকানো ছিল এবং "পিছনে" স্ট্রিংটি নিষ্ক্রিয় ছিল তবে এখনও দৃশ্যমান
  • ভিতরে ভিডিড অ্যাপ্লায়ার পিছনের বোতামটি অদৃশ্য হয়ে গেল ... তবে আমি ব্যবহারকারীকে এটি একেবারে দেখতে চাই না

অবশেষে আমার জন্য যে সমাধানটি কাজ করেছে তা হ'ল:

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];

    if (self) {
        [self.navigationItem setHidesBackButton:YES animated:NO];
    }

    return self;
}

3

জোড়ান সিমিকের দ্বারা প্রদত্ত সমাধানটি কোনও কারণে আমার পক্ষে কার্যকর হয়নি।

এই কোডটি তবে কাজ করেছিল:

MyController* controller   =   [[MyController alloc]  init];
NSArray* array             =   [[[NSArray alloc] initWithObjects:controller, nil] autorelease];

[self.navigationController setViewControllers:array animated:NO];

[controller release];

স্পষ্টতই আপনার নিজের কাজটি করার জন্য আপনাকে কোনও এনএসআরিকে আপনার স্বাদে চালিত করতে হবে। আশা করি যে কাউকে সাহায্য করবে :)


এর জন্য ধন্যবাদ! আমি একটি অদ্ভুত বাগ লড়াই করছি এবং এটি কৌশলটি করেছে the সবার জন্য নয়, তবে সঠিক ক্ষেত্রে কার্যকর।
ব্র্যান্ডন

1

আমার ইউআইভিউকন্ট্রোলার সাবক্লাসে আমার এই পদ্ধতিটি রয়েছে:

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated: animated];

    // hide back button in edit mode
    [self.navigationItem setHidesBackButton:editing animated:YES];
}

0

এটি পিছনের বোতামটি আড়াল করে এবং সুইফটে একটি অ্যাড বোতামের সাথে এটি প্রতিস্থাপন করে:

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)

    // This hides the back button while in editing mode, which makes room for an add item button
    self.navigationItem.setHidesBackButton(editing, animated: animated)

    if editing {
        // This adds the add item button
        let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
        // Use the animated setter for the left button so that add button fades in while the back button fades out
        self.navigationItem.setLeftBarButton(addButton, animated: animated)
        self.enableBackGesture(enabled: false)
    } else {
        // This removes the add item button
        self.navigationItem.setLeftBarButton(nil, animated: animated)
        self.enableBackGesture(enabled: true)
    }
}

func enableBackGesture(enabled: Bool) {
    // In addition to removing the back button and adding the add item button while in edit mode, the user can still exit to the previous screen with a left-to-right swipe gesture in iOS 7 and later. This code disables this action while in edit mode.
    if let navigationController = self.navigationController {
        if let interactivePopGestureRecognizer = navigationController.interactivePopGestureRecognizer {
            interactivePopGestureRecognizer.isEnabled = enabled
        }
    }
}

0

সুইফট 3।

সাধারণত, আপনার পৃষ্ঠায় ইতিমধ্যে বহুবার বর্ণিত হিসাবে অ্যাপলের প্রতি-ভিউ নিয়ন্ত্রণকারী API ব্যবহার করা উচিত তবে কখনও কখনও আপনার পিছনে বোতামের তাত্ক্ষণিক নিয়ন্ত্রণ প্রয়োজন।

নিম্নলিখিত কোডটি পিছনে বোতামটি লুকিয়ে রাখে এবং তা নিশ্চিত করে যে লুকানো বোতাম অঞ্চলে ট্যাপের সংঘর্ষ সনাক্তকরণটি ঘটবে না।

let emptyView = UIView(frame: .zero)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: emptyView)

0

এটি পিছনের বোতামটি আড়াল করে

let backBtn = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: navigationController, action: nil)


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