আইওএস the এর আগে, সেলটির তত্ত্বাবধানটি এতে UITableViewঅন্তর্ভুক্ত ছিল । আইওএস GM জিএম হিসাবে (সম্ভবত সম্ভবত প্রকাশ্যেও প্রকাশিত হবে) সেলটির UITableViewWrapperViewতত্ত্বাবধানটি তার তত্ত্বাবধানের সাথে একটি UITableView। সমস্যার দুটি সমাধান রয়েছে।
সমাধান # 1: একটি UITableViewCellবিভাগ তৈরি করুন
@implementation UITableViewCell (RelatedTable)
- (UITableView *)relatedTable
{
if ([self.superview isKindOfClass:[UITableView class]])
return (UITableView *)self.superview;
else if ([self.superview.superview isKindOfClass:[UITableView class]])
return (UITableView *)self.superview.superview;
else
{
NSAssert(NO, @"UITableView shall always be found.");
return nil;
}
}
@end
এটি ব্যবহারের জন্য একটি দুর্দান্ত ড্রপ-ইন প্রতিস্থাপন cell.superview, এটি আপনার বিদ্যমান কোডটিকে রিফ্যাক্টর করা সহজ করে - কেবল অনুসন্ধান করুন এবং এর সাথে প্রতিস্থাপন করুন [cell relatedTable]এবং ভবিষ্যতে যদি ভিউ হায়ারার্কি পরিবর্তন হয় বা ফিরে আসে তবে তা অবিলম্বে প্রদর্শিত হবে তা নিশ্চিত করার জন্য একটি দৃsert়তা ফেলে দিন throw আপনার পরীক্ষায়।
সমাধান # 2: একটি দুর্বল UITableViewরেফারেন্স যুক্ত করুনUITableViewCell
@interface SOUITableViewCell
@property (weak, nonatomic) UITableView *tableView;
@end
এটি অনেক উন্নত নকশা, যদিও বিদ্যমান প্রকল্পগুলিতে ব্যবহার করতে আরও কিছু কোড রিফ্যাক্টরিংয়ের প্রয়োজন হবে। আপনার tableView:cellForRowAtIndexPathব্যবহারের ক্ষেত্রে আপনার সেল বর্গ হিসাবে SOUITableViewCell বা নিশ্চিত করুন যে আপনার কাস্টম সেল শ্রেণিটি উপ- SOUITableViewCellশ্রেণীবদ্ধ হয়েছে এবং টেবিলভিউটি ঘরের টেবিলভিউ বৈশিষ্ট্যে নির্ধারণ করুন। ঘরের অভ্যন্তরে আপনি ব্যবহার করে থাকা টেবিলভিউটি উল্লেখ করতে পারেন self.tableView।