لا يقوم PreparForSegue بإرسال المعلمات عند استدعائها، مما يؤدي إلى حدوث عطل

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

سؤال

لدي مقطعان يخرجان من وحدة التحكم في العرض الأولي.يتم توصيل سلسلة الدفع بالخلية ويتم توصيل المشروط بـ + UIBarButtonItem.

enter image description here

عندما يكون هذا هو الشكل الذي يبدو عليه كود PreparForSegue الخاص بي، يكون كل شيء على ما يرام ويتم إرسال filePath من خلال سلسلة الدفع، ولكن لا يتم تمرير filePath من خلال السلسلة المشروطة.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showTimes"]) {
        [[segue destinationViewController] setFilePath:filePath];
    }

//    if ([[segue identifier] isEqualToString:@"addEvent"]) {
//        [[segue destinationViewController] setFilePath:filePath];
//    } 
}

إذا قمت بإلغاء تعليق عبارة if الثانية ومعرف السلسلة، فسيتعطل التطبيق.لا يتم إرسال filePath إلى أي مكان.لقد حاولت التحرك [[segue destinationViewController] setFilePath:filePath]; من كلا عبارات if في محاولة للتأكد من تنفيذ هذا السطر، ولكن هذا يؤدي أيضًا إلى تعطل تطبيقي.

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

أنا خسارة لما يجب القيام به.أنا جديد نسبيًا على Objective-C.

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

المحلول

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

[[[segue destinationViewController] topViewController] setFilePath:filePath];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top