عرض وحدة تحكم/بنية NIB لتطبيق غير Navigation مع التحولات؟

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

سؤال

أنا أتعامل مع تطبيق iPad (مثل العديد من تطبيقات iPad) لا يستخدم نظام التحكم في عرض جذر Uinavigation ، لذلك ليس لدي ملكية طبيعية لكل تطبيق "عرض". لديّ عرضان أساسيان: عرض قائمة المستندات ، وعرض تحرير المستند.

ألعب مع Uiview Animation للحصول على مستند محدد إلى عرض التحرير.

لديّ أيضًا شريط أدوات في الأعلى موجود (مع أزرار مختلفة) في كلا المشاهدين ".

نظرًا لأنني لا أملك Uinavigation يدير العرض بالنسبة لي ، لدي ميل إلى رمي المزيد والمزيد من الأشياء في NIB واحدة ووحدة تحكم عرض واحد تملك الحاوية بأكملها. لكنني الآن أحاول معرفة كيفية عرض طريقة عرض قائمة المستندات إلى عرض التحرير إذا كانت طريقة عرض التحرير تعيش داخل بنك الاستثمار القومي المختلفة ، مع الحفاظ على شريط الأدوات أيضًا.

أي شخص لديه أفكار أو خبرة في هياكل التطبيق مثل هذا؟ أجد أن المستندات التي تفتقر إلى أفضل الممارسات حول بنية الكود/واجهة المستخدم لأي شيء باستثناء تطبيقات الشاشة المكونة من واحد أو تطبيقات التنقل الكاملة.

أنت لست "من المفترض" أن يكون لديك وحدات تحكم من الوالدين/الطفل تملك أصحاب فرعي من نفس "الشاشة" وفقًا لمستندات المستندات ، ولكن هذا يعني أن وحدة تحكم عرض هائلة واحدة تحتوي بشكل أساسي على التطبيق بأكمله ، ولا يمكن أن يكون هذا صحيحًا.

لست متأكدًا مما إذا كان هناك "إجابة صحيحة" لهذا ؛ أنا أبحث عن بعض الأمثلة أو الاقتراحات الذكية. لم يلمس أحد هذا السؤال منذ شهور ، لذلك أنا أضيف مكافأة لتوليد ثرثرة جيدة. قون

شكرًا!

تحديث: أنا لا أتحدث عن عرض مقسم ، والذي يتم التعامل معه بشكل جيد من خلال وحدة تحكم عرض تقسيم. بدلاً من ذلك ، ألقِ نظرة على تطبيقات iWork الخاصة بـ Apple (على سبيل المثال) التي لها طريقة عرض قائمة مستندات وعرض تحرير مستقل ، ولكن هذه مرتبطة بالرسوم المتحركة.

ربما يكون السؤال الحقيقي هنا هو: كيف يمكنك (أو هل يمكنك حتى؟) إنشاء وحدة تحكم "حاوية" مثل عرض المقسم أو وحدة تحكم التنقل ، بنفسك؟ هل أنت مطلوب لبناء كل شيء لعنة من الصفر؟ أشعر أنك ، لأنه يبدو أن الأسلاك المخفية في التفاعل بين وحدات التحكم في العرض. إذا كان الأمر كذلك ، أفكار حول هذا؟

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

المحلول

أعتقد أن الأسلاك الخفية الوحيدة في عرض وحدات التحكم هي تعيين ParentViewController ، وهو أمر مطلوب لدعم الفئات المعلنة للتقسيم والملاحة.

تم تصميم وحدات التحكم في العرض لتكون متداخلة ، مع امتلاك كل وحدة تحكم جزء من التسلسل الهرمي للعرض. الهدف الوحيد من التصميم هو عدم الوصول إلى وحدة التحكم في العرض في التسلسل الهرمي للمراقبة الأخرى. عادةً ما يكون لدى وحدة التحكم في عرض الوالدين بعض الدعوة لإضافة وحدات تحكم الأطفال بحيث يمكنها تعيين إطار العرض في التسلسل الهرمي للعرض الذي يمتلكه. يجب ألا تفعل وحدة التحكم في عرض الطفل أي شيء لمحة عن العرض الذي يتحكم فيه ، حيث تملكها وحدة تحكم أخرى. لا ينبغي أن يضبط المركز أو إطار العرض الذي يتحكم فيه.

على سبيل المثال ، يحتوي وحدة تحكم التنقل على طريقة دفع ، حيث تقوم بإزالة طريقة عرض وحدة التحكم السابقة ، وتضيف طريقة عرض وحدة التحكم الجديدة ، وتعيين إطار العرض المضافة حديثًا. بشكل عام ، تكون وحدة التحكم في عرض الوالدين مجانية في تعيين إطار عرض وحدة تحكم الطفل ، ولكن ليس الحدود.

إذا كنت ترغب في تغيير الرسوم المتحركة لوحدة تحكم التنقل ، فأعتقد أنك ستبدأ بتنفيذ كل طريقة مع الرسوم المتحركة: وسيطة. قم بإعداد الرسوم المتحركة الخاصة بك ثم اتصل بـ Super مع علامة الرسوم المتحركة قبل ارتكاب الرسوم المتحركة.

نصائح أخرى

لم أجرب الشيء المتعدد في المراقبة خارج تلك التي تقدمها UIKIT (الملاحة/علامة التبويب/وسيط/إلخ) ، لكنني لا أرى لماذا لا ينبغي أن تنجح. تحت الغطاء ، كل شيء هو عرض ، على الرغم من أنني سألاحظ أن Uikit لديه وجهات نظر خاصة لوحدات التحكم في العرض والتي لا شك أن هناك نوعًا من التعاملات الخاصة من قبل النظام (لدى UiviewController طريقة عرض لفّة ، فإن uinavigationController لديه عرض uinavigationTranstionView أو شيء ما ، .. .).

أنصح بعدم القلق كثيرًا بشأن "أفضل الممارسات" - فقط رمز شيء ما الذي تريده. خياران:

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

لاحظ أيضًا أنه يمكنك تحميل NIBs متعددة في نفس وحدة التحكم في العرض عن طريق على سبيل المثال توصيله بمنفذ يسمى EditView. الفرق الكبير هو أنه لم يتم تلقائيًا بواسطة -[UiviewController LoadView] لذلك تحتاج إلى القيام بشيء مثل

-(EditView*)editView {
  if (!editView) {
    // Loads EditView into the outlet editView
    [NSBundle loadNibNamed:@"EditView" owner:self];
  }
  return editView;
}

ستحتاج أيضًا إلى القلق بشأن إضافته إلى التسلسل الهرمي للعرض الخاص بك ، وتفريغه على -(void) viewDidunload (iPhone OS 3.0+) ، وإعداده في -(void) viewDidload في حالة وجود تحذير من الذاكرة أثناء وضع التحرير ، إلخ...

الأمر ليس بالأمر السهل ، لكن واجهة المستخدم أبدا.

تحتاج إلى عرض ماجستير يتم تنفيذه باستخدام عرض تقسيم/popover-view ويتم التحكم فيه باستخدام UISplitViewController.

العرض الرئيسي هو قائمة المستندات وعرض التفاصيل هو عرض التحرير. كل لديه وحدة تحكم خاصة بها. تتم إدارة وحدات التحكم في أنفسهم بواسطة UISplitViewController.

إذا لم تستخدم وحدة تحكم SplitView ، فسوف ينتهي بك الأمر إلى ترميز شيء يدويًا يشبهه كثيرًا. هذه هي حقًا الطريقة الوحيدة للقيام بما تريده بسهولة في واجهة برمجة التطبيقات ، وهو التصميم الذي يتوقعه مستخدمو iPad.

نرى إنشاء واجهة عرض تقسيم في دليل برمجة iPad للحصول على التفاصيل.

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