يعود زر العودة إلى uitableviewController مختلف من حيث جاء

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

  •  22-09-2019
  •  | 
  •  

سؤال

لنفترض أن لديّ uitableViewController A ، و UitableViewController B. يحمل كل من A و B Uiview C. في الزر الخلفي في C ، كيف أتأكد من أن يعود دائمًا إلى B ، بدلاً من المكان الذي جاء منه؟

فيما يلي مثال ملموس: A = نافذة جهات الاتصال في iPhone Skype. B = نافذة الدردشات ، كل صف هو سجل دردشة مع شخص مختلف C = نافذة الدردشة تعرض محادثة مع نفس الشخص.

يمكن تحميل C من A أو B ، لكنني أريد أن يعود Backbutton على نافذة الدردشة (C) إلى نافذة الدردشات (ب) فقط.

هتافات.

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

المحلول 4

حصلت على الجواب من مجموعة Google وتبع اقتراحه ، يعمل:

من Sukima: أعتقد (على الرغم من أنه ليس لدي فكرة حقيقية) أن ما تفعله هذه التطبيقات مثل Skype و Beejive هو عند عرض رغبة C ، فإنه سيقوم بإرسال رسالة إلى Uitabbar للانتقال إلى علامة التبويب الدردشات ثم الضغط في عرض التفاصيل C. هو في الواقع أفضل لأنه بعد ذلك سيرى المستخدم أن العرض قد تغير من خلال حقيقة أن Tabbar قد غيرت النقاط البارزة. من: قرأت أيضًا موضوع Stackoverflow. أنا أفهم الآن ما تسألك.

نصائح أخرى

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

سوف تتوقع المستخدم أن يأخذهم زر العودة إلى "العودة" إلى العرض السابق تمامًا كما هو الحال في كل تطبيق آخر يستخدمونه. إن الذهاب إلى أي وجهة نظر أخرى سوف يربكهم أكثر من ذلك لأنه ليس تسلسلًا هرميًا بل حلقة. سيذهب المستخدمون أحيانًا إلى B-> C-> B ولكن في أوقات أخرى ، A-> C-> B-> C. (كيف يعودون إلى أ؟)

بدلاً من زر العودة في C ، يجب أن يكون لديك زر على الجانب الأيمن الذي يأخذك دائمًا إلى B بغض النظر عن كيفية وصولك إلى C. لا ينبغي للمستخدمين أن يتذكروا الوضع غير المرئي الذي يقومون به للتنبؤ بالزر الذي سيكون عليه زر A.


EDIT01: (الرد على التعليقات أدناه)

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

أعتقد أنه سيتعين عليك البدء بعرض رئيسي غير مرئي ثم إضافة tabbar إلى ذلك. في وحدة التحكم في العرض الرئيسي ، قم بإنشاء سمات/منافذ لكل عرض. في كل عرض ، يكون لديك سمة/منفذ مرتبط بوحدة التحكم في العرض الرئيسي. ثم اطلب من "زر العودة" (الذي أقترحه بشدة أن تسمية "الدردشات") لطريقة الاتصال C في A و B التي تستدعي طريقة في وحدة تحكم العرض الرئيسية التي تزيل (1) طريقة العرض C من إما Tab A أو علامة التبويب B (2) تبديل علامة التبويب إلى علامة التبويب B ثم (3) تحميل B في علامة التبويب B.

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

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

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

سوف تنتهي دائمًا بالعودة إلى المنظر الذي يسمى pushViewController

هل يمكن أن يكون لديك إرسال رسالة B تسبب B للاتصال بها pushViewController?
قد لا أفهم الهندسة المعمارية الخاصة بك ، لكنني أعتقد أن ذلك سيعمل.

إذا كنت ترغب حقًا في القيام بذلك ، فيمكنك إنشاء طريقة في B تدفع C ، ثم دفع B من A (بدون رسوم متحركة) والاتصال بالطريقة التي تدفع C. بالطبع عندما تنبثق C إلى B ، ستظل A تحتها.

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