سؤال

عندما أقوم بدفع وحدة 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"
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top