Intereting Posts
PFquery ऑब्जेक्ट प्राप्त करते समय PFRelation ऑब्जेक्ट कैसे प्राप्त करें? आवश्यक आइकन फ़ाइल अनुपलब्ध है बंडल में बिल्कुल '120×120' पिक्सल के iPhone / iPod Touch के लिए ऐप आइकन नहीं है स्क्रॉल दृश्य खड़ी स्क्रॉल नहीं करते छवि से यूआईएमएजेव्यूव्यू पॉइंट्स, कंटेंटमोड-अवगत में कन्वर्ट करें आईएसओ में केवल मापांक और एक्सपोनेंट का उपयोग करके आरएसए के साथ एक स्ट्रिंग एन्क्रिप्ट करना Xcode या iTunes पर Testflight बाहरी परीक्षकों के क्रैश लॉग कैसे प्राप्त करें? Xcode के संसाधन फ़ोल्डर में गैर-संस्करण नियंत्रित चित्रों को कैसे बांधाएं? क्या IOS के लिए एक हस्तलेखन मान्यता पुस्तकालय है? एनएससीके – ऑब्जेक्ट मार्किंग नहीं-हटाने योग्य आईओएस यूआई स्वचालन LogElementTree निष्पादित करते समय सभी तत्व प्रदर्शित नहीं होते हैं क्या मुझे एमके एन्नेटेशन, एमके एनोटेशन व्यू या एमके पिन अननोटेशन का उपयोग करना चाहिए? आईओएस: Google Analytics और AdMob के साथ कोकोपॉड जारी ऑडियो क्यूईज़ का उपयोग कर पीसीएम डेटा चला रहा है UIDatePickerView के बजाय UIPickerView का उपयोग करने के लिए Apple DateCell उदाहरण को परिवर्तित करना आईओएस – UITableViewCell में UIButton के लिए विलंबित "टच डाउन" ईवेंट

स्विफ्ट टेबलव्यू फूटर गतिविधि इंडिकेटर फेसबुक जैसा दिखें अधिक डेटा लोड करने के लिए नीचे स्क्रॉल करते समय

मैं एक TableView पाद लेख गतिविधि इंडिकेटर बनाना चाहता हूँ Facebook की तरह देखें, जब वेब से लोड होने वाले अधिक डेटा के लिए नीचे स्क्रॉल किया जाता है, तो यह भी कह सकता है कि अनंत सोकोलिंगदृश्य।

मेरा अनंत सोकोलिंग ठीक है, लेकिन इसमें तीन समस्याएं हैं

  1. वेब से पूर्ण डेटा लोड करने के बाद पाद लेख की पृष्ठभूमि की जगह छिप नहीं जा रही है

  2. ActivityIndicatorView ऊपर और नीचे बढ़ रहा है, लेकिन मैं गतिविधि इंडिकेटर डाल करना चाहता हूँ हमेशा फेसबुक की तरह नीचे देखें

  3. गतिविधि इंडिकेटर दिखाना चाहते हैं यदि डेटा है

NetworkRequestAPI अनुरोध

import Foundation class NetworkRequestAPI { static func getPropductListByCategory(productId : Int, pageNo : Int , completion: @escaping ([Product]? , Error?) -> ()){ let url = URL(string: Configuration.BASE_URL+"/product-by/type?product_type_id="+String(productId)+"&page="+String(pageNo)) var categoryObject = [Product]() URLSession.shared.dataTask(with:url!) { (urlContent, response, error) in if error != nil { } else { do { let json = try JSONSerialization.jsonObject(with: urlContent!) as! [String:Any] let products = json["products"] as? [String: Any] // productCount = (json["product_count"] as? Int)! let items = products?["data"] as? [[String:Any]] items?.forEach { item in let oProduct = Product() oProduct.product_id = item["product_id"] as? Int oProduct.product_name = item["product_name"] as? String oProduct.product_image = item["product_image"] as? String let ratingItem = item["rating_info"] as? [String: AnyObject] let rating = RatingInfo() rating.final_rating = ratingItem?["final_rating"] as? String oProduct.rating_info = rating categoryObject.append(oProduct) } completion(categoryObject, nil) } catch let error as NSError { print(error) completion(nil, error) } } }.resume() } } 

सूचीटेबल दृश्य वर्ग

 class ListTableView: UITableViewController { var isInitUILoad = true var arrProduct = [[Product]]() var pageNo = 1 override func viewDidLoad() { super.viewDidLoad() self.initUILoad() } func initUILoad(){ ActivityIndicator.customActivityIndicatory(self.view, startAnimate: true) NetworkRequestAPI.getPropductListByCategory(productId: product_id, pageNo: pageNo) { (products, error) in DispatchQueue.main.async(execute: { if products != nil { self.pageNo += 1 self.arrProduct.append(products!) print(self.arrProduct.count) }else{ print(error.debugDescription) } ActivityIndicator.customActivityIndicatory(self.view, startAnimate: false) self.tableView?.reloadData() self.isInitUILoad = false }) } } func loadMore(complition:@escaping (Bool) -> ()) { NetworkRequestAPI.getPropductListByCategory(productId: product_id, pageNo: pageNo) { (products, error) in DispatchQueue.main.async(execute: { if error != nil{ print(error.debugDescription) } if products != nil && products?.count ?? 0 > 0{ self.pageNo += 1 self.arrProduct.append(products!) self.tableView?.insertSections([self.arrProduct.count - 1], with: .fade) }else{ print("no product left") } complition(true) }) } } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: categoryCellid, for: indexPath) as! ListTableCell var categoryObject = arrProduct[indexPath.section] cell.product = categoryObject[indexPath.item] return cell } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 115.0 } override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: footerCellid) as! HeadFooterCell if !isInitUILoad { footerView.activityIndicatorView.startAnimating() loadMore(complition: { (isDone) in footerView.activityIndicatorView.stopAnimating() }) } return footerView } override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return 50 } } 

** हेडफ़ूटर सेल **

 class HeadFooterCell: UITableViewHeaderFooterView { override init(reuseIdentifier: String?) { super.init(reuseIdentifier: reuseIdentifier) setupViews() } var activityIndicatorView : UIActivityIndicatorView = { var activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray) activityIndicatorView.backgroundColor = UIColor.cyan return activityIndicatorView }() func setupViews() { addSubview(activityIndicatorView) addConstraintsWithFormat("H:|[v0]|", views: activityIndicatorView) addConstraintsWithFormat("V:|[v0(50)]|", views: activityIndicatorView) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } 

Solutions Collecting From Web of "स्विफ्ट टेबलव्यू फूटर गतिविधि इंडिकेटर फेसबुक जैसा दिखें अधिक डेटा लोड करने के लिए नीचे स्क्रॉल करते समय"