iPhone: NavigationController NavigationBar Back Bunting Text
-
20-09-2019 - |
سؤال
عندما أقوم بدفع وحدة ViewController جديدة على وحدة تحكم التنقل ، فإن زر "Back" هو عنوان وحدة التحكم السابقة.
كيف يمكنني تغيير النص في الزر "العودة" إلى "العودة" بدلاً من السيطرة الافتراضية للسيطرة؟
المحلول
يمكنك بالفعل تعيين العنوان على وحدة التحكم الرئيسية في العرض navigationItem
عنوان. أساسا كل UIViewController
لديه القليل من كعب UINavigationItem
الذي يحتوي على بيانات تعريف حول كيفية الرجوع إلى هذا العرض داخل أ UINavigationController
. بشكل افتراضي ، أن البيانات الوصفية تعود إلى UIViewController
بحد ذاتها.
على افتراض "الذات" هو UIViewController
من الرأي المرئي داخل UINavigationController
, ، تعيين:
self.navigationItem.title = @"My Custom Title"
نصائح أخرى
هذه هي الطريقة الصحيحة لعمل زر العودة مع شيء آخر غير عنوان الصفحات السابقة
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Your Title";
self.navigationItem.backBarButtonItem = barButton;
يفهم ذلك:
self.navigationItem.backBarButtonItem.title = @"Your Title";
سيجعل عنوان شريط التنقل في الصفحة السابقة هذا ليس ما تريد.
أعلم أن السؤال قديم جدًا ، لكنني وجدت حلاً لطيفًا.
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"back";
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;
يعمل من ChildView! تم اختباره مع iOS 7.
تحتاج إلى إنشاء زر مخصص على وحدة تحكم التنقل. ضع الكود التالي في ViewDidload في وحدة التحكم في عرض الجذر:
UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease];
tempButtonItem .title = @"Back";
self.navigationItem.backBarButtonItem = tempButtonItem ;
من خلال إعداد زر شريط التنقل على وحدة التحكم في عرض الجذر ، يعرض العرض الذي تم دفعه زر الخلفية المناسب.
يمكنك تغيير عنوان وحدة تحكم العرض الحالية لوحدة التحكم في التنقل قبل دفع وحدة التحكم الجديدة في العرض:
self.title = @"Custom Title";
[self pushViewController: newViewController ...];
and in the navigation controller's delegate class
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if([viewController class] == [OldViewController class]) {
viewController.title = @"Your previous title";
}
}
يمكنك تحقيق ذلك عن طريق تعيين عنوان زر العودة في وظيفة "ViewWillDisAppear" من وحدة التحكم الأصلية على النحو التالي:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for this view
self.navigationItem.title = "My Title"
}
override func viewWillDisappear(animated: Bool) {
super.viewWillAppear(animated)
//Set Title for back button in next view
self.navigationItem.title = "Back"
}