UITableViewController ছাড়া UITableView রিফ্রেশ করতে টানুন


180

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

উত্তর:


465

UITableViewএটি ব্যবহার না করে সরাসরি একটিতে রিফ্রেশ নিয়ন্ত্রণ যুক্ত করুন UITableViewController:

override func viewDidLoad() {
    super.viewDidLoad()
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: #selector(refresh(_:)), for: .valueChanged)

    if #available(iOS 10.0, *) {
        tableView.refreshControl = refreshControl
    } else {
        tableView.backgroundView = refreshControl
    }
}

@objc func refresh(_ refreshControl: UIRefreshControl) {
    // Do your job, when done:
    refreshControl.endRefreshing()
}

1
দুর্দান্ত এবং সহজ। আইওএস 7.0.4 এ ইউআইভিউউকন্ট্রোলারে যুক্ত হওয়া একটি টেবিল ভিউটিতে চেষ্টা করার সময় এটি আমার পক্ষে কাজ করে।
থানডাসুরু

5
নিয়ন্ত্রণটি নিজেই দৃশ্যমান না হলেও অন্য কেউ ভাল কাজ করছে বলে মনে হচ্ছে এমন কি কারও সমস্যা আছে?
রিমোটভিশন 20'8

16
সারণী দর্শনটি একবার "ক্লিক" হওয়ার পরে অপ্রত্যাশিতভাবে নেমে আসবে বলে মনে হয়। এখনও নিশ্চিত না কেন।
বব স্প্রিন

3
আমি দেখতে পেয়েছি যে এটি ভিউডিডিঅ্যাপে যেতে হবে, নিশ্চিত নয় যে এটি কোনও আইওএস 7 বৈশিষ্ট্য কিনা - আমি এখনও এটি আইওএস 8 তে পরীক্ষা করতে পারিনি ...
জ্যাক সলোমন

4
রিফ্রেশকন্ট্রোলটি টেবিলভিউয়ের উপরে উপস্থিত হয়। : আমি এই সংশোধন করা হয়েছে tableView.insertSubview(refreshControl, atIndex: 0)পরিবর্তেtableView.addSubview(refreshControl)
kbpontius

12

উদ্দেশ্য-সি :

এইভাবে আপনি টেবিল দৃশ্যের জন্য রিফ্রেশ করতে টান প্রয়োগ করতে পারেন। সংগ্রহ দর্শনের ক্ষেত্রে একই। সংগ্রহের দৃশ্যের সাথে সারণী দর্শন বরাদ্দকে কেবল প্রতিস্থাপন করুন।

UITableView *tableViewDemo  =  [[UITableView alloc]init];
tableViewDemo.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
tableViewDemo.dataSource =  self;
tableViewDemo.delegate =  self;
[self.view addSubView: tableViewDemo];

UIRefreshControl *refreshController = [[UIRefreshControl alloc] init];
[refreshController addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[tableViewDemo addSubview:refreshController];

#pragma mark - Handle Refresh Method

-(void)handleRefresh : (id)sender
{
   NSLog (@"Pull To Refresh Method Called");
   [refreshController endRefreshing];
}

যখন সুইফট সংস্করণটি> 430 রয়েছে তখন কেবলমাত্র আপত্তি-সি সংস্করণটিতে কীভাবে 9 টি আপভোট থাকবে?
চেজ রবার্টস

1
@ চেজরবার্টস, এটির উত্তর ফেব্রুয়ারী 13 এ দেওয়া হয়েছে, সম্পাদনা ইতিহাসের দিকে একবার নজর দিন, মূলত এটি ছিল উদ্দেশ্য-সি, যেহেতু এই সময়ে সুইফট নতুন ছিল, তাই প্রত্যেকে সুইফ্ট
ইরফান

4

@ বারিকের এই সমাধানটি সূক্ষ্মভাবে কাজ করে তবে ইউআইসিএন্ট্রোলারটি ইউআইটিএবল ভিউ কনট্রোলারের শীর্ষে প্রদর্শিত হয়। এটি ঠিক করার উপায়টি এই পরিবর্তনটি করছে:

override func viewDidLoad() {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
    tableView.backgroundView = refreshControl // <- THIS!!!
}

func refresh(refreshControl: UIRefreshControl) {
    // Do your job, when done:
    refreshControl.endRefreshing()
}

3
রিফ্রেশকন্ট্রোলটি আমার জন্য টেবিলের উপরে উপস্থিত হয় তবে আপনার পরামর্শটি আমার refreshControlঅদৃশ্য হয়ে যায়, নীচের অংশে উপস্থিত হয় না tableView। আমি এটি দ্বারা স্থির করেছি: টেবিলভিউ.ইনডসউউভিউ (রিফ্রেশকন্ট্রোল) এর পরিবর্তে টেবিলভিউ.নিসেটসুউভিউ (রিফ্রেশকন্ট্রোল, atIndex: 0)
kbpontius

3

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

এটির জন্য কেবল এটি এবং কয়েকটি অতিরিক্ত সংযোগ প্রয়োজন :)

আশাকরি এটা সাহায্য করবে.


-1

দেখে মনে হচ্ছে আপনি যদি ভিউ কন্ট্রোলারের লোডভিউ পদ্ধতির ভিতরে ইউআইআরআইফ্রেশকন্ট্রোল তৈরি করেন তবে সবকিছু ঠিকঠাক কাজ করে। ইউআইআরআইফ্রেশকন্ট্রোলটি যেমনটি করা উচিত তেমন আচরণ করে। আইওএস 7.1 এবং আইওএস 8.2 দিয়ে পরীক্ষিত


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.