سؤال

عندما أضيف عرضًا فرعيًا إلى UitableViewController الخاص بي ، يبدو أنه تحت عرض TableView. قد أقوم بتحميل النظرة الفرعية الخاصة بي بشكل غير صحيح ، أو الاتصال addSubview في المكان الخطأ. الرؤية الفرعية التي أشير إليها هي المنطقة الحمراء فوق tabbar التي تحتوي أيضًا على زر "Click Me":

screen shot

يمكنك أن ترى أن خطوط الخلايا نوع من التداخل. إليكم المكان الذي أضيف فيه العرض الفرعي في TableViewController:

- (void)viewDidLoad {
    [super viewDidLoad];
    CGRect hRect = CGRectMake(0, 170, 320, 480);
    HomeScreenOverlayView *homeView = [[HomeScreenOverlayView alloc] initWithFrame:hRect];
    [self.tableView addSubview:homeView];
    [homeView release];
}

أيه أفكار؟ شكرًا!

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

المحلول

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

أفضل ما يجب القيام به هو إنشاء عرض فارغ وإضافة كل من عرض الجدول وعرض التراكب إليه ، مع التأكد من أن عرض التراكب أعلى من عرض الجدول.

تخدم المشاهدات الأدوار الثلاثة للرسم والتفاعل والتخطيط. من الجيد أن يكون لديك رؤية تملأ واحدة فقط من هذه الأدوار.

نصائح أخرى

لقد واجهت هذه القضية بنفسي وحلها من خلال عدم إضافة طريقة عرض إلى الجدول ، بل إضافة طريقة العرض إلى مراقبة الجدول.

UIView *viewToAdd = [[UIView alloc] initWithFrame: self.view.frame];
[self.view.superview addSubview: viewToAdd];

هذا مفيد بشكل خاص عندما تريد إخفاء الجدول بأكمله (مثل شاشات التحميل).

NB عادةً ما أضيف هذا إلى ViewWillAppear: في دورة حياة العرض.

يمكنك استخدام - (void)sendSubviewToBack:(UIView *)view أو - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index. addSubview دائما يضع المنظر الجديد في المقدمة.
تعديل: عذرًا ، أخطأ في قراءة السؤال ، يبدو أنك تريد أن تكون الرؤية الفرعية في المقدمة.

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