ইউআইটিএবলভিউসেল থেকে কীভাবে ইউআইটিএবলভিউ পাবেন?


100

আমার একটি রয়েছে UITableViewCellযা একটি অবজেক্টের সাথে যুক্ত এবং সেলটি দৃশ্যমান কিনা তা আমাকে জানাতে হবে। আমি যে গবেষণাটি করেছি তা থেকে, এর অর্থ হল UITableViewযে কোনওভাবে এটিতে থাকা অ্যাক্সেসের প্রয়োজন (সেখান থেকে, এটি দৃশ্যমান কিনা তা পরীক্ষা করার বিভিন্ন উপায় রয়েছে)। সুতরাং আমি ভাবছি যদি UITableViewCellএকটি পয়েন্টার আছে UITableView, বা ঘর থেকে পয়েন্টার পেতে অন্য কোনও উপায় ছিল কিনা?


2
এর উদ্দেশ্য কী?
সর্বোচ্চ_

[cell superView]হতে পারে?
ক্রিস লুনাম

6
আপনি কেন এটির প্রয়োজন মনে করেন এটি ব্যাখ্যা করার মতো এটি - এটি খারাপ ডিজাইনের একটি চিহ্ন হতে পারে কারণ কোনও সেলটি স্ক্রিনে রয়েছে কিনা তা জানতে আমি সত্যিই অনেক বৈধ কারণ সম্পর্কে ভাবতে পারি না।
পল.স

@ পল.স. আমাদের ঘরে একটি ইমেজটিতে একটি অঙ্গভঙ্গি শনাক্তকারী রয়েছে এবং যখন ঘরটি স্পর্শ করা হয় তখন এটি অন্য ওভারলে ভিউটি খুলবে, ভাবুন পপওভার স্টাইলটি, যাতে সঠিকভাবে প্রদর্শন করার জন্য প্রয়োজনীয় যতগুলি কক্ষ ওভারলে হওয়া উচিত। এটি কাজ করার জন্য এটির জন্য প্রদর্শিত টেবিলভিউ বা এটির জন্য দেওয়া অন্যান্য ভিউ দরকার। সমাধানগুলির সাথে সত্যই খুশি নন তবে ইউআইটিএবলভিউসিলের ইউআইটিএলভিউ পাওয়ার জন্য কাঙ্ক্ষিত প্রভাবটি পাওয়ার জন্য আমরা সামনে এসেছি সেরা।
চাদবাগ

1
@ শ্যাডবাগের কোনও উদ্বেগ নেই, আশা করি আমি একই সমস্যাটি অন্য কাউকে দিয়েছি।
পিজে_ফিনেগান

উত্তর:


153

আইওএস সংস্করণটি পরীক্ষা করা এড়াতে, ইউআইটিএলভিউ না পাওয়া পর্যন্ত পুনরাবৃত্তভাবে ঘরের দৃশ্য থেকে তত্ত্বাবধানগুলি অনুসরণ করুন:

id view = [tableViewCellInstance superview];

while (view && [view isKindOfClass:[UITableView class]] == NO) {
    view = [view superview]; 
}

UITableView *tableView = (UITableView *)view;

1
ধন্যবাদ। এটি প্রদর্শিত হবে যে এটি আবার আইওএস 8 এ পরিবর্তিত হয়েছে এবং এটি সমস্ত সংস্করণ সুন্দরভাবে যত্ন নিয়েছে।
djskinner

2
ভবিষ্যতের আপডেটগুলিতে সামঞ্জস্যতার সমস্যাগুলি এড়াতে আমি ঘরে টেবিলভিউতে একটি দুর্বল উল্লেখ যুক্ত করার পরামর্শ দেব would
কেনি

1
বরং একটি দুর্বল উপায়। ভবিষ্যতে দর্শনের শ্রেণিবিন্যাস পরিবর্তন হলে এটি কাজ করবে না।
রোমানএন

2
কেবলমাত্র একটি দুর্বল সম্পত্তি তৈরি করা আরও ভাল হবে যা প্রকৃতপক্ষে টেবিলভিউতে একটি পয়েন্টার ধারণ করে। সাবক্লাসে @property (weak, nonatomic) UITableView *tableView;এবং tableView:cellForRowAtIndexPath:ঠিক সেট করে cell.tableView = tableView;
আলেজান্দ্রো ইভান

বর্তমান অভিজ্ঞতাটি হ'ল ঘরটি শনাক্ত করার পরে, এখনই কোনও সারণীদর্শন সেলটির তদারকি হিসাবে উপস্থিত হবে না - যদি আমি ঘরটি বাইরে স্ক্রোল করি এবং আবার ফিরে আসি তবে আমি একটি তদারক হিসাবে টেবিলের ভিউটি দেখতে পাই (বর্ণিত হিসাবে পুনরাবৃত্ত অনুসন্ধান) অন্যান্য উত্তর)। অটোলেআউট এবং সম্ভবত অন্যান্য কারণগুলি সম্ভবত কারণগুলি।
জনি

48

UITableViewWrapperViewআইওএস 7 বিটা 5 এ এ এর ​​সুপারভিউ রয়েছে UITableViewCellএছাড়াও UITableViewএকটি এর সুপারভিউ হয় UITableViewWrapperView

আইওএস 7 এর জন্য সমাধানটি হ'ল

UITableView *tableView = (UITableView *)cell.superview.superview;

আইওএস-এর জন্য আইওএস 6 পর্যন্ত সমাধান রয়েছে

UITableView *tableView = (UITableView *)cell.superview;


5
ওহ মানুষ, এটি একটি নির্মম এপিআই পরিবর্তন। আপনি 6 এবং 7 উভয় সমর্থন করলে শাখার জন্য অ্যাপলের সেরা অনুশীলনটি কী?
রায়ান রোমানচুক

@ রায়ানরমনচুক এখানে একটি ভাল পরামর্শ: devforums.apple.com/message/865550#865550 - ঘরটি তৈরি হওয়ার পরে আপনার সম্পর্কিত টেবিলভিউতে একটি দুর্বল পয়েন্টার তৈরি করুন। পর্যায়ক্রমে, UITableViewCellএকটি নতুন পদ্ধতি সহ একটি বিভাগ তৈরি করুন relatedTableViewযা কোনও আইওএস সংস্করণ পরীক্ষা করে এবং উপযুক্ত সুপারভিউ দেয়।
স্মৃতি

3
এর জন্য ইউআইভিউতে একটি পুনরাবৃত্ত বিভাগটি লিখুন। আপনার সংস্করণটি পরীক্ষা করার দরকার নেই; আপনি কোনও টেবিল ভিউ সেল বা ভিউ স্ট্যাকের শীর্ষটি না পাওয়া পর্যন্ত কেবল সুপারভাইউকে কল করুন। এটি আমি আইওএস 6 এ ব্যবহার করেছি এবং এটি আইওএস 7-এ কোনও পরিবর্তন ছাড়াই কাজ করেছে And এবং আইওএস 8-তে বসে কাজ করা উচিত
স্টিভেন ফিশার

ক্ষমা প্রার্থনা করা; আমি বলতে চাইছি আপনি টেবিলের ভিউ না পাওয়া পর্যন্ত। :)
স্টিভেন ফিশার

39

সুইফট 5 এক্সটেনশন

recursively

extension UIView {
    func parentView<T: UIView>(of type: T.Type) -> T? {
        guard let view = superview else {
            return nil
        } 
        return (view as? T) ?? view.parentView(of: T.self)
    }
}

extension UITableViewCell {
    var tableView: UITableView? {
        return parentView(of: UITableView.self)
    }
}

লুপ ব্যবহার করে

extension UITableViewCell {
    var tableView: UITableView? {
        var view = superview
        while let v = view, v.isKind(of: UITableView.self) == false {
            view = v.superview
        }
        return view as? UITableView
    }
}

থাম্বের একটি নিয়ম জোর করে
মোড়ক

1
@thibutnoah আন-র্যাপিংয়ের view != nilআগে একটি চেক আছে । যদিও ক্লিনার কোডে আপডেট হয়েছে
অরখান আলিখানোভ

25

আইওএস 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


আমি দ্বিমত পোষণ করি যে সমাধান 2 একটি আরও ভাল নকশা। এটিতে ব্যর্থতার আরও পয়েন্ট রয়েছে এবং শৃঙ্খলাবদ্ধ ম্যানুয়াল হস্তক্ষেপ প্রয়োজন। প্রথম সমাধানটি আসলে বেশ নির্ভরযোগ্য, যদিও আমি এটি প্রয়োগ করবো @ আইড্রিস তার উত্তরে আরও কিছু ভবিষ্যতের প্রতিরোধের জন্য প্রস্তাবিত হিসাবে।
devios1

1
পরীক্ষাটি [self.superview.superview isKindOfClass:[UITableView class]]প্রথম হওয়া উচিত, কারণ আইওএস 7 আরও বেশি করে।
কপারক্যাশ

7

যদি এটি দৃশ্যমান হয় তবে এটির একটি তত্ত্বাবধান রয়েছে। এবং ... অবাক করা ... সুপারভিউ একটি ইউআইটিএবলভিউ অবজেক্ট।

যাইহোক, একটি তদারকি করা পর্দায় থাকার কোনও গ্যারান্টি নয়। তবে ইউআইটিএবলভিউ কোন কোষটি দৃশ্যমান তা নির্ধারণের জন্য পদ্ধতি সরবরাহ করে।

এবং না, কোনও ঘর থেকে কোনও টেবিলে কোনও উত্সর্গীকৃত রেফারেন্স নেই। আপনি যখন UITableViewCell সাবক্লাস করেন তখন আপনি একটি পরিচয় করিয়ে দিতে পারেন এবং এটি তৈরির উপর সেট করতে পারেন। (সাবউভিউ হায়ারার্কির কথা চিন্তা করার আগে আমি নিজেই এটি অনেক কিছু করেছি))

আইওএস 7 এর জন্য আপডেট: অ্যাপল এখানে সাবভিউ হায়ারার্কি পরিবর্তন করেছে। যথাযথভাবে ডকুমেন্টেড নয় এমন জিনিসগুলির সাথে কাজ করার সময়, জিনিসগুলির পরিবর্তনের ঝুঁকি থাকে is কোনও ইউআইটিএবলভিউ অবজেক্টটি অবশেষে সন্ধান না পাওয়া পর্যন্ত ভিউ হায়ারার্কিটি "ক্রল আপ" করা অনেক দূরে সেভার।


14
এটি আইওএস 7-এ আর সত্য নয়, আইওএস 7 বিটা 5-এ ইউআইটিএবলভিউর্যাপারভিউ হ'ল একটি ইউআইটিএবলভিউসিলের তত্ত্বাবধান ... এখনই আমাকে সমস্যা তৈরি করছে
গ্যাবে

মন্তব্যের জন্য ধন্যবাদ. আমাকে তখন আমার কিছু কোড পরীক্ষা করতে হবে।
হারমান ক্লেকার

7

দ্রুতি 2.2 সমাধান।

ইউআইভিউ-র জন্য একটি এক্সটেনশন যা পুনরাবৃত্তভাবে একটি নির্দিষ্ট ধরণের সাথে একটি ভিউ অনুসন্ধান করে।

import UIKit

extension UIView {
    func lookForSuperviewOfType<T: UIView>(type: T.Type) -> T? {
        guard let view = self.superview as? T else {
            return self.superview?.lookForSuperviewOfType(type)
        }
        return view
    }
}

বা আরও কমপ্যাক্ট (কবিরোবেরাই ধন্যবাদ):

import UIKit

extension UIView {
    func lookForSuperviewOfType<T: UIView>(type: T.Type) -> T? {
        return superview as? T ?? superview?.superviewOfType(type)
    }
}

আপনার কক্ষে আপনি কেবল এটি কল করেছেন:

let tableView = self.lookForSuperviewOfType(UITableView)
// Here we go

মনে রাখবেন যে UITableViewCell কেবলমাত্র ইউটিআইটিভিউতে সেলফররোআউটআইডেক্সপথ কার্যকর হওয়ার পরে যুক্ত হবে।


আপনি সম্পূর্ণ lookForSuperviewOfType:পদ্ধতি শরীরকে এক লাইনে কম্প্যাক্ট করতে পারেন , এটি আরও return superview as? T ?? superview?.superviewOfType(type)
তাত্ক্ষণিক করে তোলে

@ কবিরোবেরাই, আপনাকে ধন্যবাদ আমি উত্তরে আপনার পরামর্শ যুক্ত।
মেহদজোর

পুনরাবৃত্ত কল দ্বারা ব্যবহৃত নামের সাথে মিল থাকা দরকার। সুতরাং এই পড়া দরকার: ... ?? সুপারভিউ? .লোকফোর্ডসপরিউভঅফটাইপ (প্রকার)
রবার্ট

7

সুপার ভিউ কল করে বা প্রতিক্রিয়াশীল চেইনের মাধ্যমে আপনি যা পরিচালনা করতে পারেন তা খুব ভঙ্গুর হতে চলেছে। এটি করার সর্বোত্তম উপায়, যদি কোষগুলি কিছু জানতে চায় তবে হ'ল কোষের কাছে এমন কোনও বস্তু পাঠানো যা কোনও পদ্ধতিতে প্রতিক্রিয়া জানায় যা সেল জিজ্ঞাসা করতে চায় এমন প্রশ্নের উত্তর দেয় এবং নিয়ন্ত্রণকারীকে কী উত্তর দিতে হবে তা নির্ধারণ করার যুক্তি প্রয়োগ করে (আপনার প্রশ্ন থেকে আমি অনুমান করি যে সেলটি কিছু দৃশ্যমান কিনা তা জানতে চাইবে)।

কক্ষে একটি প্রতিনিধি প্রোটোকল তৈরি করুন, সারণীর ভিউকন্ট্রোলারটির প্রতিনিধি সেট করুন এবং সমস্ত ui "নিয়ন্ত্রণকারী" যুক্তিটি টেবিলভিউকট্রোলারে সরান।

সারণী দর্শন কক্ষগুলি ডাম ভিউ হওয়া উচিত যা কেবল তথ্য প্রদর্শন করবে।


প্রতিনিধিদের মাধ্যমে আরও ভাল হতে পারে। আমি অস্থায়ীভাবে টেবিলে একটি উত্তীর্ণ রেফারেন্স ব্যবহার করছি যেহেতু পিতা বা মাতা আমাকে সমস্যা দিয়েছেন।
ক্রিশ্তি বালু 18

1
আমি যা বর্ণনা করেছি তা মূলত প্রতিনিধি প্যাটার্নটি ব্যবহার করে :)
জাভিয়ের সোটো

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, লোকেরা এই প্রশ্নটি দেখে, ১৫০++ উত্তর উত্তর দেখে এবং তারা মনে করে যে সেল থেকে টেবিলভিউটি পাওয়া ভাল এবং এমনকি দুর্ভাগ্যক্রমে এর একটি দৃ reference় রেফারেন্স রাখতে পারে।
অ্যালেক্স তেরেঞ্জে

6

আমি তার পিতামাতার টেবিলভিউটি পেতে ইউআইটিএবলভিউসেলতে একটি বিভাগ তৈরি করেছি:

@implementation UITableViewCell (ParentTableView)


- (UITableView *)parentTableView {
    UITableView *tableView = nil;
    UIView *view = self;
    while(view != nil) {
        if([view isKindOfClass:[UITableView class]]) {
            tableView = (UITableView *)view;
            break;
        }
        view = [view superview];
    }
    return tableView;
}


@end

সেরা


3

উপরের উত্তরের উপর ভিত্তি করে এখানে সুইফট সংস্করণ রয়েছে। ExtendedCellপরে ব্যবহারের জন্য আমি সাধারণীকরণ করেছি ।

import Foundation
import UIKit

class ExtendedCell: UITableViewCell {

    weak var _tableView: UITableView!

    func rowIndex() -> Int {
        if _tableView == nil {
            _tableView = tableView()
        }

        return _tableView.indexPathForSelectedRow!.row
    }

    func tableView() -> UITableView! {
        if _tableView != nil {
            return _tableView
        }

        var view = self.superview
        while view != nil && !(view?.isKindOfClass(UITableView))! {
            view = view?.superview
        }

        self._tableView = view as! UITableView
        return _tableView
    }
}

এই সাহায্য আশা করি :)


2

আমি এই সমাধানটি গ্যাবের পরামর্শের ভিত্তিতে তৈরি করেছি যে UITableViewWrapperViewআইটেমটি আইওএস 7 বিটা 5-তে UITableViewCellঅবজেক্টের তত্ত্বাবধান।

সাবক্লাস UITableviewCell:

- (UITableView *)superTableView
{
    return (UITableView *)[self findTableView:self];
}

- (UIView *)findTableView:(UIView *)view
{
    if (view.superview && [view.superview isKindOfClass:[UITableView class]]) {
        return view.superview;
    }
    return [self findTableView:view.superview];
}

2

আমি উপরের উত্তর থেকে ধার নেওয়া এবং কিছুটা সংশোধন করেছি এবং নীচের স্নিপেট নিয়ে এসেছি।

- (id)recursivelyFindSuperViewWithClass:(Class)clazz fromView:(id)containedView {
    id containingView = [containedView superview];
    while (containingView && ![containingView isKindOfClass:[clazz class]]) {
        containingView = [containingView superview];
    }
    return containingView;
}

ক্লাসে পাস করা অন্যান্য কিছু অনুষ্ঠানে ইউআইটিবেল ভিউ ব্যতীত অন্য স্থানগুলি অনুসরণ এবং দেখার জন্য নমনীয়তা সরবরাহ করে।


2

এই সমস্যার আমার সমাধানটি অন্যান্য সমাধানগুলির মতো কিছুটা হলেও, একটি মার্জিত ফর লুপ ব্যবহার করে এবং এটি সংক্ষিপ্ত। এটি ভবিষ্যতের প্রমাণও হওয়া উচিত:

- (UITableView *)tableView
{
    UIView *view;
    for (view = self.superview; ![view isKindOfClass:UITableView.class]; view = view.superview);
    return (UITableView *)view;
}

সেলটি কল করার সময় টেবিল দৃশ্যে এখনও না থাকলে এটি চিরতরে লুপ হয়ে যাবে। ঠিক করতে, শূন্যের জন্য একটি চেক যুক্ত করুন: for (view = self.superview; view && ![view isKindOfClass:UITableView.class]; view = view.superview);
আন্তোনিও নুনস

2
UITableView *tv = (UITableView *) self.superview.superview;
BuyListController *vc = (BuyListController *) tv.dataSource;

1

সুপারভিউয়ের পরিবর্তে, ["UItableViewvariable" দৃশ্যমান সেলগুলি] ব্যবহার করে দেখুন।

আমি এটি ব্যবহার করেছি এমন একটি অগ্রভাগে অ্যাপটি যে কক্ষগুলি দেখেছিল এবং এটি কাজ করেছে সেগুলি লুপ করতে লুপগুলি করে।

for (UITableView *v in [orderItemTableView visibleCells])//visibleCell is the fix.
{
  @try{
    [orderItemTableView reloadData];
    if ([v isKindOfClass:[UIView class]]) {
        ReviewOrderTableViewCell *cell = (ReviewOrderTableViewCell *)v;
        if (([[cell deleteRecord] intValue] == 1) || ([[[cell editQuantityText] text] intValue] == 0))
            //code here 
    }
  }
}

একটি যাদুমন্ত্র মত কাজ করে.


1

সর্বনিম্ন পরীক্ষিত তবে এই জেনারিক সুইফট 3 উদাহরণটি কার্যকর বলে মনে হচ্ছে:

extension UITableViewCell {
    func tableView() -> UITableView? {
        var currentView: UIView = self
        while let superView = currentView.superview {
            if superView is UITableView {
                return (superView as! UITableView)
            }
            currentView = superView
        }
        return nil
    }
}

0

এই কোডটি `UITableView *tblView=[cell superview];আপনাকে ইউআইটিবেল ভিউয়ের একটি উদাহরণ দেবে যাতে ট্যাবে ভিউ সেল রয়েছে


এটি কার্যকর হবে না, কারণ কোনও ইউআইটিএবলভিউসিলের তাত্ক্ষণিক তত্ত্বাবধানটি কোনও ইউআইটিএবলভিউ নয় । আইওএস 7 এর হিসাবে, ইউআইটিএবল ভিউসেল সুপারভিউ হ'ল একটি ইউআইটিবেবলউইউভার্পারভিউ। কম ভঙ্গুর, আরও নির্ভরযোগ্য পদ্ধতির জন্য এখানে অন্যান্য উত্তরগুলি দেখুন।
জেয়ার্ডএইচ

0

আমি পরামর্শ দিচ্ছি যে আপনি পিতামাতার ইউআইটিএবল ভিউটিকে সন্ধান করতে এইভাবে ভিউ হায়ারার্কিকে অতিক্রম করবেন:

- (UITableView *) findParentTableView:(UITableViewCell *) cell
{
    UIView *view = cell;
    while ( view && ![view isKindOfClass:[UITableView class]] )
    {
#ifdef DEBUG
        NSLog( @"%@", [[view  class ] description] );
#endif
        view = [view superview];
    }

    return ( (UITableView *) view );
}

অন্যথায় আপনার কোডটি ভেঙে যাবে যখন অ্যাপল পুনরায় দৃশ্যক্রমক্রম পরিবর্তন করবে ।

শ্রেণিবিন্যাসকেও অনুসরণ করে এমন একটি আর উত্তর পুনরাবৃত্ত হয়।


0
UITableViewCell Internal View Hierarchy Change in iOS 7

Using iOS 6.1 SDK

    <UITableViewCell>
       | <UITableViewCellContentView>
       |    | <UILabel>

Using iOS 7 SDK

    <UITableViewCell>
       | <UITableViewCellScrollView>
       |    | <UIButton>
       |    |    | <UIImageView>
       |    | <UITableViewCellContentView>
       |    |    | <UILabel>


The new private UITableViewCellScrollView class is a subclass of UIScrollView and is what allows this interaction:


![enter image description here][1]


  [1]: http://i.stack.imgur.com/C2uJa.gif

http://www.curiousfind.com/blog/646 ধন্যবাদ



0
extension UIView {
    func parentTableView() -> UITableView? {
        var viewOrNil: UIView? = self
        while let view = viewOrNil {
            if let tableView = view as? UITableView {
                return tableView
            }
            viewOrNil = view.superview
        }
        return nil
    }
}

0

@ আইড্রিস উত্তর থেকে আমি সুইফটে ইউআইটিএবলভিউসিলের জন্য একটি প্রসারণ লিখেছি

extension UITableViewCell {
func relatedTableView() -> UITableView? {
    var view = self.superview
    while view != nil && !(view is UITableView) {
        view = view?.superview
    }

    guard let tableView = view as? UITableView else { return nil }
    return tableView
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.