لا يقوم PreparForSegue بإرسال المعلمات عند استدعائها، مما يؤدي إلى حدوث عطل
-
21-12-2019 - |
سؤال
لدي مقطعان يخرجان من وحدة التحكم في العرض الأولي.يتم توصيل سلسلة الدفع بالخلية ويتم توصيل المشروط بـ + UIBarButtonItem.
عندما يكون هذا هو الشكل الذي يبدو عليه كود 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];