كيف يمكنني تعطيل SelectRowatIndexPath عندما تكون العرض الفرعي مرئيًا
-
20-09-2019 - |
سؤال
أنا أكتب "Tweetie 2" مثل وظائف Swipe ، لكنني واجهت ما آمل أن يكون آخر كتلة عثرة.
عندما يمرر المستخدم عبر صف الجدول ، فإن عرض "عناصر التحكم" ينشط كما هو متوقع ، ولكن عندما يكون الصف محدد ، DeSelectRowatIndexPath تم إطلاقه. النتيجة المرجوة هي عندما تكون عرض "الضوابط" مرئيًا لتعطيل DeSelectRowatIndexPath الطريقة أو لعدم وجود عبارة أفضل ... أوقف سلسلة المستجيب لمواصلة الماضي "عناصر التحكم".
يتم استخدام طرق مندوب UITouch/يتم استدعاؤها في UITABLViewCell المخصص.
المحلول
يجب أن يقوم القليل من المنطق بالمهمة هنا. لنفترض أنك تضيف هذه الخاصية إلى فئة UlitableViewController الفرعية:
NSIndexPath *indexPathForCellInUtilityMode;
عندما يقوم المستخدم بإعداد طريقة عرض الأداة المساعدة للخلية ، تقوم خلية هذا:
NSIndexPath *cellIndexPath = [parentViewController.tableView indexPathForCell:self];
parentViewController.indexPathForCellInUtilityMode = cellIndexPath;
ثم:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath compare:indexPathForCellInUtilityMode] != NSOrderedSame) {
//Do whatever you're normally doing in this method.
}
لذلك ستقوم بتعطيل الاختيار للخلية المتأثرة مع السماح للمستخدم بالتفاعل مع الخلايا المرئية الأخرى.
نصائح أخرى
ماذا عن إعداد/إشراك قيمة allowsSelection
في UITableView
كما هو مطلوب؟