سؤال

أقوم بتغيير عنوان عنصر زر العودة في ViewDidAppear لوحدة التحكم بالطريقة التالية:

self.navigationController.NavigationBar.backItem.title = @"previous" ؛

إنه يغير الجنين بشكل صحيح ، لكن لدي سلوك غريب. عندما أقوم بتحديد الزر "السابق" ، فإنه يغير من ضغوط وحدة التحكم الموجودة في المكدس (أي أن وحدة التحكم الأصل لديها الآن عنوان "السابق".

هل أنت الآن لماذا حدث هذا؟

هل كانت مفيدة؟

المحلول

عندما تستخدم وحدة تحكم التنقل ، اتصل [Self Settitle:@"title"] ؛ داخل أي وحدة تحكم عرض في المكدس سوف تعيين عنوان شريط التنقل. هذا هو أيضًا العنوان المستخدم افتراضيًا لزر الخلف عند الضغط على وحدة تحكم عرض جديدة. على ما يبدو ، مما تواجهه ، وضع عنوان Backitem بشكل صريح ، يحدده أيضًا لعنوان شريط التنقل لوحدة التحكم السابقة التي تتجاوز ما هو محدد في المكالمة إلى -settitle في وحدة التحكم في العرض.

من المحتمل أن تكون أفضل حالًا في إدارة العنوان من داخل وحدة التحكم في مكدس التنقل الخاص بك. عندما تذهب لدفع وحدة تحكم عرض جديدة ، افعل هذا:

[self setTitle:@"Previous"];
NextViewController *controller = [[NextViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

الآن ، عندما يتم عرض وحدة التحكم في العرض التالي ، فإن زر العودة مع "السابق". الآن ، تحتاج فقط إلى تغييره إلى كل ما ينبغي أن يكون عنوانه الحقيقي في ViewWillAppear:

- (void)viewWillAppear:(BOOL)animated;
{
    [self setTitle:@"Real Title"];
    [super viewWillAppear:animated];
}

قد يشعر الأمر بالاختراق قليلاً ، لكنه أفضل من محاولة تجاوز وظيفة شريط التنقل. يمكن أن تكون المصارعة مع مكدس وحدة التحكم في NAV BAR/NAV أمرًا محبطًا للغاية.

مع أطيب التحيات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top