উত্তর:
এই লিঙ্ক থেকে :
self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Custom Title"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
যেমন টাইলার মন্তব্যগুলিতে বলেছেন:
দৃশ্যমান ভিউ কন্ট্রোলারে এটি করবেন না, তবে ভিউ কন্ট্রোলারে আপনি যদি পিছনের বোতামটি চাপেন তবে দেখতে পাবেন
release
UIBarButtonItem
UIBarButtonItemStyleBordered
সম্পত্তিটিতে কল দিয়ে প্রতিস্থাপন করুন self.navigationItem.backBarButtonItem.style
। ডকুমেন্টেশন: ডেভেলপার.এপল.
আপনি পাঠ্যটি ইন্টারফেস বিল্ডারে সেট করতে পারেন:
ভিউকন্ট্রোলারের নেভিগেশন আইটেমটি নির্বাচন করুন যাতে পিছনের বোতামটি ফিরে আসবে:
ইউটিলিটিস প্যানেল অ্যাট্রিবিউট ইন্সপেক্টরটিতে, পিছনের বোতামটির জন্য আপনার লেবেলটি প্রবেশ করুন:
আমি গ্রহণযোগ্য উত্তর হিসাবে কোড শিরোনাম সেট করার চেয়ে এই পদ্ধতির পছন্দ করব।
এছাড়াও নোট করুন, আপনাকে স্ট্যাকের এক স্তর পর্যন্ত ভিউ কন্ট্রোলারে এটি করতে হবে। অন্য কথায়, দৃশ্যমান ভিউ কন্ট্রোলারে এটি করবেন না, তবে ভিউ কন্ট্রোলারে আপনি যদি পিছনের বোতামটি আঘাত করেন তবে দেখতে পাবেন।
--Tyler
আমি এটি ব্যবহার:
// In the current view controller, not the one that is one level up in the stack
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBar.backItem.title = @"Custom text";
}
আমি স্ট্যাকের উপরে অন্য কোনও নিয়ামককে চাপ দেওয়ার আগে কেবল নিয়ামকের শিরোনাম সেট করে এর একটি সহজ সমাধান খুঁজে পেয়েছি:
self.navigationItem.title = @"Replacement Title";
[self.navigationController pushViewController:newCtrl animated:YES];
তারপরে, এটির মতো মূল শিরোনামটি নিশ্চিত করে নিন viewWillAppear
:
-(void)viewWillAppear:(BOOL)animated
{
...
self.navigationItem.title = @"Original Title";
...
}
এটি কাজ করে কারণ UINavigationController
পুশ অপারেশনের সময় পিছনের বোতামটি তৈরি করার সময় পূর্ববর্তী নিয়ামকটির শিরোনামটি ব্যবহার করার সময় এর ডিফল্ট আচরণ ।
পিছনের বোতামটির শিরোনাম পূর্ববর্তী দর্শনের শিরোনামের ডিফল্ট হয় তাই আমি যে দ্রুত কৌশল ব্যবহার করি তা হ'ল নিম্নলিখিত কোডটি পূর্ববর্তী ভিউ .এম ফাইলের মধ্যে স্থাপন করা।
-(void)viewWillAppear:(BOOL)animated {
// Set title
self.navigationItem.title=@"Original Title";
}
-(void)viewWillDisappear:(BOOL)animated {
// Set title
self.navigationItem.title=@"Back";
}
আপনার init পদ্ধতিতে, নিম্নলিখিত কোডটি যুক্ত করুন:
- (id)initWithStyle:(UITableViewStyle)style {
if(self = [super init]) {
//...
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStylePlain
target:self
action:@selector(goBack)];
self.navigationItem.leftBarButtonItem = customBackButton;
[customBackButton release];
//...
}
return self;
}
তারপরে ভিউকন্ট্রোলারকে বরখাস্ত করার জন্য একটি সহজ পদ্ধতি যুক্ত করুন:
-(void)goBack {
[self.navigationController popViewControllerAnimated:YES];
}
ভিডডিলোড বা লোডভিউতে নিম্নলিখিত কোডটি যুক্ত করুন
self.navigationController.navigationBar.topItem.title = @"Custom text";
আমি এটি আইওএস 9 এর সাথে আইফোন এবং আইপ্যাডে পরীক্ষা করেছি
navigationController
topItem
self.navigationController?.navigationBar.topItem?.title = "Custom Text"
লাগামের উত্তর যোগ করা। অ্যাপলের ডক্স থেকে নোট করুন যে ব্যাকবার্ট বাটন আইটেমের ঘোষণাটি হ'ল :
@property(nonatomic, retain) UIBarButtonItem *backBarButtonItem
অতএব, লাগামের উত্তর মেমরি ফাঁস করবে কারণ সংশ্লেষিত সেটারটি আপনি retain
যে উদাহরণটি পাস করবেন সেটি হবে, যা কখনই স্পষ্টভাবে প্রকাশ হয় না। আপনি এটি ব্যবহার করে প্রতিকার করতে পারেনautorelease
self.navigationItem.backBarButtonItem =
[[[UIBarButtonItem alloc] initWithTitle:@"Custom Title"
style:UIBarButtonItemStyleBordered
target:nil
action:nil] autorelease]; //<-- autoreleased
অথবা আপনি উদাহরণটিতে কোনও ভেরিয়েবল নির্দেশ করতে পারেন যাতে আপনি এটি পরে স্পষ্টভাবে প্রকাশ করতে পারেন:
UIBarButtonItem* item = ...
self.navigationItem.backBarButtonItem = item;
[item release];
আশাকরি এটা সাহায্য করবে!
আমি আকর্ষণীয় কিছু আবিষ্কার করেছি। আপনি যদি সাবক্লাসটি করেন UINavigationController
এবং pushViewController:animated:
পদ্ধতিটিকে ওভাররাইড করে এবং এর মতো কিছু করেন: (মনে রাখবেন যে আমি এআরসি ব্যবহার করছি)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle: @"Back"
style: UIBarButtonItemStyleBordered
target: nil action: nil];
viewController.navigationItem.backBarButtonItem = backButton;
[super pushViewController:viewController animated:animated];
তারপরে ViewControllers
আপনার নেভিগেশন কন্ট্রোলারের সাহায্যে ধাক্কা দেওয়া সমস্তগুলির জন্য স্বয়ংক্রিয়ভাবে সেগুলিতে "পিছনে" বোতামটি থাকবে। আপনি যদি কিছু নির্দিষ্ট ভিউ কন্ট্রোলারের জন্য পাঠ্য পরিবর্তন করতে চান তবে আপনি চেষ্টা করতে পারেন এবং ভিউকন্ট্রোলারকে একটি নির্দিষ্ট শ্রেণিতে বা আপনার নিজস্ব কাস্টম প্রোটোকলকে কাস্ট করতে পারেন (যা আপনার ভিউকন্ট্রোলার উত্তরাধিকার সূত্রে আসে যার মতো পদ্ধতিতে backButtonText
বা নির্বোধের মতো কিছু থাকতে পারে ) যা আপনাকে দিতে পারে সোটাতে যে ভিউ কন্ট্রোলার আসছে সে সম্পর্কে নির্দিষ্ট তথ্য আপনি এর জন্য পিছনের বোতামের পাঠ্যটি কাস্টমাইজ করতে পারেন। এখন পিছনের বোতামের পাঠ্যটি এমন জায়গায় যত্ন নেওয়া হয়েছে যা পুরোপুরি দায়বদ্ধ হওয়া উচিত। আমাকে স্বীকার করতে হবে যে পাঠ্যটি পরিবর্তন করতে একটি নতুন বোতাম তৈরি করা সফল হয়েছে, তবে ওহ ভাল।
কেউ কেন এমন কারণ না করে এর কারণ চিন্তা করতে পারে? কমপক্ষে আপনাকে ভিউকন্ট্রোলার শিরোনামগুলি নিয়ে গলগল করতে হবে না বা নেভিগেশন নিয়ামকটিতে ভিউকন্ট্রোলারকে চাপ দেওয়ার আগে একটি নতুন ব্যাক বোতাম তৈরির কথা মনে রাখতে হবে না।
লাগাম উত্তর ভাল কাজ করে।
মনে রাখবেন আপনি যদি একাধিক ভিউ নিয়ন্ত্রককে চাপ দেন তবে পরিবর্তিত ব্যাক বোতামের শিরোনাম তাদের প্রত্যেকের জন্য উপস্থিত হবে যা আপনি যা চান তা নাও হতে পারে।
সেক্ষেত্রে প্রতিবার আপনি কোনও নিয়ামককে চাপ দেওয়ার সময় কাস্টম UIBarButtonItem তৈরি করতে হবে।
এছাড়াও, ভিউ কন্ট্রোলারটিকে চাপ দেওয়ার আগে আপনি এটি করেছেন তা নিশ্চিত করুন , অন্যথায় শিরোনাম পরিবর্তনের সাথে সাথে আপনি একটি স্ক্রিন হিচাপ পাবেন।
অউব্রির পরামর্শকে প্রসারিত করে আপনি চাইল্ড ভিউ কন্ট্রোলারে এটি করতে পারেন:
পিতামাতার নেভিগেশন আইটেম.টাইটেল এবং পিতামাতার নেভিগেশন আইটেমের পুরানো মানগুলি সংরক্ষণ করার জন্য দুটি ভেরিয়েবল তৈরি করুন
UINavigationItem* oldItem;
NSString* oldTitle;
ইন viewDidLoad
, নিম্নলিখিত যোগ করুন:
oldItem = self.navigationController.navigationBar.topItem;
oldTitle = oldItem.title;
[oldItem setTitle: @"Back"];
ইন viewWillDisappear
, নিম্নলিখিত যোগ করুন:
[oldItem setTitle: oldTitle];
oldTitle = nil; // do this if you have retained oldTitle
oldItem = nil; // do this if you have retained oldItem
এটি নিখুঁত নয়। নতুন কন্ট্রোলারটি অ্যানিমেটেড হওয়ার সাথে সাথে আপনি প্যারেন্ট ভিউ পরিবর্তনের শিরোনাম দেখতে পাবেন B তবে এটি ব্যাক কাস্টম লেবেলিংয়ের লক্ষ্যটি অর্জন করে এবং এটি স্ট্যান্ডার্ড ব্যাক বোতামের মতো আকার ধারণ করে।
viewDidLoad
এটি আপনার মধ্যে রাখুন , আশা করি এটি আপনি যা সন্ধান করছেন তাতে ফলাফল আসবে
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close"
style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backBarButtonItem;
[backBarButtonItem release];
যদি আপনি দ্রুত নিয়ন্ত্রণে আগমনকারী নিয়ামক (কখনও কখনও আরও যুক্তিযুক্ত ..) এ শিরোনাম সেট করতে চান তবে:
func setBackButtonNavBar(title: String, delay: Double){
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: { () -> Void in
if let navBar = self.navigationController?.navigationBar{
navBar.backItem?.title = title
}
})
}
আসন্ন নিয়ামক:
override func viewDidLoad() {
super.viewDidLoad()
self.setBackButtonNavBar(title: "back", delay: 0.3)
}
সাধারণত আমি কন্ট্রোলার এক্সটেনশনে সেল্ফ.সেটব্যাকবটননবারকে রাখি।
আমি জানি এটি একটি পুরানো প্রশ্ন এবং উত্তরগুলির ধরণের আপডেট!
সহজ উপায় হ'ল পিতামাতার ভিউ কন্ট্রোলারে এটি করা:
অর্থাত্ আপনাকে পরবর্তী দেখার জন্য নিয়ামকের দিকে নিয়ে যায়।
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Custom text here", style: .plain, target: nil, action: nil)
কোডে এটি করার ফলে এর পিছনের বোতামের স্টাইলটি মুছে ফেলা হবে UINavigationConroller
। আপনি যদি আপনার প্রতিটি দর্শনে নেভিগেশন আইটেম যুক্ত করেন তবে আপনি পিছনে বোটের শিরোনামটি সেট করতে পারেন StoryBoard
।
self.navigationController.navigationBar.topItem.title = @"Custom text";