سؤال

أحاول تنفيذ انتقال الوجه مثل إيبوكس كما القصة المصورة.يجب أن يدفع سيجو ريسب.البوب destinationViewController على / من كومة إينافيغاتيونكونترولر.

يمكنني دفع فيوكونترولر في سيجويس بلدي perform طريقة ولكن أنا لست قادرا على البوب.عندما كنت البوب وحدة تحكم الحق بعد إنشاء بلدي الوجه الرسوم المتحركة لا يتم تشغيل الرسوم المتحركة واستدعاء لها-التي ينبغي أن تؤدي [[UIApplication sharedApplication] endIgnoringInteractionEvents] يحصل أبدا دعا وبلدي التطبيق النتائج القتلى.

لذلك حاولت دفع / البوب في animationDidStop:anim:flag طريقة التفويض ولكن لا يتم استدعاؤها أبدا مع تعيين العلم على ترو.

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

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

المحلول

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

(1) في لوحة العمل الخاصة بك (التي لديها فيوكونترولر أ & ب) إنشاء سيغ مشروط من أ إلى ب.إعطائها معرف (شوفيوكونتروليرب) واختيار الانتقال:الوجه الأفقي.

أنشأنا البروتوكول والمندوبين:

(2 أ) في فيوكونترولرب.ح إضافة فوق @واجهة:

@class ViewControllerB;

@protocol ViewControllerBDelegate
    - (void)viewControllerBDidFinish:(ViewControllerB *)controller;
@end

(2 ب) إضافة المندوب كخاصية:

@property (weak, nonatomic) id <ViewControllerBDelegate> delegate;

(3 أ) في فيوكونترولرب.م توليف:

@synthesize delegate;

(3 ب) وتفويض في طريقة الوجه مرة أخرى:

- (IBAction)flipBack:(id)sender
{
    [self.delegate viewControllerBDidFinish:self];
}

(4) في فيوكونتروليرا.ح أضف في الأعلى #import "ViewControllerB.h" وفي نهاية @واجهة <ViewControllerBDelegate>

(5 أ) في فيوكونتروليرا.م إضافة طريقة لتتوافق مع البروتوكول:

- (void)viewControllerBDidFinish:(ViewControllerB *)controller
{
    [self dismissModalViewControllerAnimated:YES];
}

(5 ب) ثم تعيينه كمندوب في بريبريفورسيغو:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showViewControllerB"]) {
        [[segue destinationViewController] setDelegate:self];
    }
}

آمل أن يكون هذا يجيب على سؤالك.إذا كنت أسيء فهمها ، فقط اسمحوا لي أن أعرف.

نصائح أخرى

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

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

إذا قمت بتعيين نمط القصة المصورة إلى مشروط يمكنني تعيين الانتقال إلى الوجه الأفقي (ما يبدو أن ما تريد).ولكن بعد ذلك لن يظهر زر الرجوع.في المقدمة فيوكونترولر أنا رفض وجهة النظر مع:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

وسوف الوجه وجهة النظر الثانية مرة أخرى مع الوجه الصحيح.

ولكن هذا هو الحل القذر ولا ينصح به من قبل شركة آبل.

http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ManagingDataFlowBetweenViewControllers/ManagingDataFlowBetweenViewControllers.html#//apple_ref/doc/uid/TP40007457-CH8-SW9

أعطاك لوك دوبرت مثالا على كيفية تنفيذ المندوب.

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