ما هي الطريقة الصحيحة لإضافة شريط الأدوات إلى UITableView?

StackOverflow https://stackoverflow.com/questions/1072604

  •  21-08-2019
  •  | 
  •  

سؤال

أنا أكتب الملاحة القائمة على اي فون التطبيق و أود أن يكون UIToolBar رست في الجزء السفلي من الشاشة ، UITableView التمرير بين شريط الأدوات و شريط التنقل.

لقد رأيت بعض المنتديات حيث انها قد اقترح أن تحكم الرأي التعامل مع هذا الرأي يجب أن يكون معيار UIViewController بدلا من UITableViewController.رأي المراقب أن تنفيذ مندوب UITableView و أساليب مصدر البيانات بالإضافة إلى كل من معيار UIViewController تجاوزات.ما (إن وجدت) المدمج في وظيفة لا تحتاج إلى إعادة إنشاء في هذا الرأي تحكم فرعية أخرى غير المذكورة آنفا بروتوكولات أن يكون ذلك الفعل مثل UITableViewController?هل هناك أي شيء أنا أفقد قبل الذهاب في هذا الطريق ؟

أو سيكون من الأفضل أن تداخل UITableViewController داخل القياسية UIViewController?

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

المحلول

واعتبارا من OS 3.0 لديه تحكم الإنتقال إلى شريط الأدوات التي بنيت في لإظهاره:.

[self.navigationController setToolbarHidden:NO];

حسب implmenting:

- (void)setToolbarItems:(NSArray *)toolbarItems animated:(BOOL)animated

وفي وحدة التحكم وجهة نظرك، يمكنك تكوين العناصر من شريط الأدوات.

وهكذا لم يعد لديك ما يدعو للقلق حيث يقع شريط الأدوات في التسلسل الهرمي الخاص بك.

و(تصحيح الخطأ المطبعي)

نصائح أخرى

وكوري فلويد هي في معظمها الصحيح، إلا أن

[self.navigationController setToolBarHidden:NO];

يجب أن يكون

[self.navigationController setToolbarHidden:NO];

وهذا هو، و "ب" في "setToolbarHidden" يجب أحرف صغيرة. أيضا، اسم الأسلوب المدرجة في في اي فون OS المرجعي هو في الواقع

- (void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated

وعلى الرغم من أنه يبدو أن إهمال المعلمة animated يعمل أيضا.

//Tool bar
[self.navigationController setToolbarHidden:NO];

UIBarButtonItem *buttonItem = [[ UIBarButtonItem alloc ] initWithTitle: @"Select All"
                                                style: UIBarButtonItemStyleBordered
                                               target: self
                                               action: @selector(selectAll:) ];
UIBarButtonItem *buttonNext = [[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStyleBordered target:self action:@selector(goNext:)];
self.toolbarItems = [ NSArray arrayWithObjects: buttonItem, buttonNext, nil ];

[ buttonItem release ];
[buttonNext release];

كل ما عليك فعله هو تنفيذ UITableViewDelegate و UITableViewDatasource الأساليب المطلوبة على مستوى عرض جدول الوظائف التي تحتاجها.هذه الأساليب يمكن أن تكون في أي فئة(es) ولو قال الطبقات يجب أن تتوافق مع البروتوكولات ذات الصلة.مندوب و datasource على UITableView سبيل المثال - إما برمجيا أو مع واجهة البناء.وفقا مستندات لك سوف تفقد بعض الوظائف - انظر نظرة عامة على القسم.

شخصيا أجد أن العديد من المطورين يبدو أن هاجس توفير كل هذه الوظيفة في مجموعة واحدة متجانسة تحكم عرض الصف ، و ذلك لأن لديهم عرض الجدول في رأيهم ثم فئة فرعية من UITableViewController يجب أن تستخدم.ومع ذلك, أود أن تنظر في واحد مبدأ المسؤولية وغالبا ما كسر مصدر البيانات مندوب في فصول منفصلة عندما تعقد أي شيء آخر غير بسيطة.رمز هو أيضا ثم لا ترتبط معين UIViewController التنفيذ.

في الحالات حيث يجب فصل مصدر البيانات/مندوب فئات أنا في كثير من الأحيان بناء و سلك بهم إلى عرض الجدول باستخدام واجهة البناء وليس في التعليمات البرمجية.هذا النهج (بالنسبة لي على الأقل) هو في روح حقن التبعية ويحفظ كتابة بعض المرجل لوحة رمز يوفر بعض فصل.

هذه الخيارات بالطبع تتأثر تعقيد الوظيفة التي تحاول تحقيق - بسيطة تطبيقات أجد نفسي باستخدام UITableViewController.

وجرب هذا:

self.navigationController.toolbarHidden = NO;

ونأمل أن يساعد أنت.

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