هل هناك طريقة لمعرفة متى يتم استخدام الفهرس على UitableView بالفعل؟

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

  •  02-10-2019
  •  | 
  •  

سؤال

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

أي مساعدة يحظى بتقدير كبير.

شكرًا.

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

المحلول

  1. ال UITableViewDataSource طريقة تفويض -tableView:sectionForSectionIndexTitle:atIndex: يعود NSInteger تمثيل القسم المحدد من فهرس القسم. تجاوز هذه الطريقة في أي فئة هي مندوب مصدر البيانات الخاص بك (ربما وحدة التحكم في عرض الجدول).

  2. قم بإعداد خاصية في وحدة التحكم في العرض ، NSInteger اتصل selectedSectionIndex. يتم تعيين قيمتها ضمن طريقة المندوب المذكورة أعلاه.

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

في الخاص بك -viewWillAppear: الطريقة ، على سبيل المثال:

[self addObserver:self forKeyPath:@"selectedSectionIndex" options:NSKeyValueObservingOptionNew context:nil];

في الخاص بك -viewWillDisappear: الطريقة ، إلغاء تسجيل المراقب:

[self removeObserver:self forKeyPath:@"selectedSectionIndex"];

من المهم القيام بذلك حتى -dealloc الطريقة لا ترمي استثناء.

أخيرًا ، قم بإعداد طريقة المراقب للقيام بشيء ما عندما يكون هناك تغيير selectedSectionIndex:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqual:@"selectedSectionIndex"]) { 
        // The section index changed, so trigger some cool animation
    }
}

نمط مراقبة القيمة الرئيسية هو وسيلة جيدة وعامة لجعل شيء ما عندما تتغير قيمة الكائن في مكان ما. كتبت شركة Apple جيدًا وثيقة "البداية السريعة" الذي يقدم هذا الموضوع.

نصائح أخرى

ليس حلاً أنيقًا للغاية ، ولكن قد تكون قادرًا على الفئة الفرعية uitableview ومشاهدته - (void)didAddSubview:(UIView *)subview; عندما تظهر لأول مرة. هذا يفترض أنه يتم إضافته مباشرة إلى UitableView وليس أحد آراءه الفرعية أو الرؤية ، ويمكنك التعرف على العرض المضافة كمؤشر. من الممكن أيضًا أنه بعد أول مرة يتم فيها إضافتها ، سيتم إخفاءها وإظهارها بدلاً من إزالتها وإضافتها مرة أخرى.

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