Skip to main content

Custom Loader (Activity Indicator) in Swift

Creating a custom activity indicator in Swift allows you to tailor the appearance and behavior of your loading spinner to fit the style of your app. Here's a step-by-step guide to creating a simple custom activity indicator using UIView Step 1: Create a New Swift File for the Custom Activity Indicator Create a new Swift file and name it  RotatingCirclesView.swift . Add the following code to define a custom UIView subclass for your activity indicator: // //   RotatingCirclesView.swift //   Welcome In // //   Created by Praveen Kumar on 05/09/24. // import UIKit class RotatingCirclesView : UIView {          let circle1 = UIView ( frame : CGRect ( x : 20 , y : 20 , width : 60 , height : 60 ))     let circle2 = UIView ( frame : CGRect ( x : 120 , y : 20 , width : 60 , height : 60 ))          let position : [ CGRect ] = [ CGRect ( x : 30 , y : 20 , width : 60 , height : 60 ), CGRect ( x : 60 , y : 15 ,...

Parse JSON Data with GET Method Using JsonDecoder in iOS

Parse JSON Data(GET Method) in UITableViewCell Using JsonDecoder Swift 4 & Xcode 9


1) -- ViewController Class

First Create a new Project (ParseDataGETMethod) after make a struct (GetJsonData)
type data parameter


import UIKit

struct GetJsonData:Decodable {
    let name: String
    let capital: String
    let alpha2Code: String
    let alpha3Code: String
    let region: String
    let subregion: String
    
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var arrData = [GetJsonData]()
    @IBOutlet var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        getJSONData()
    }
    func getJSONData(){
        let url = URL(string: "https://restcountries.eu/rest/v2/all")
        let session = URLSession.shared
        session.dataTask(with: url!) { (data, response, error) in
            do{
                if error == nil {
                    self.arrData = try JSONDecoder().decode([GetJsonData].self, from: data!)
                    for mainarr in self.arrData{
                       // print(mainarr.name, ":", mainarr.capital, "-", mainarr.alpha2Code )
                        DispatchQueue.main.sync {
                            self.tableView.reloadData()
                        }
                    }
                }
            }catch{
                print("Error in JSON Data")
            }
            
        }.resume()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.arrData.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:tableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! tableViewCell
        cell.lblname.text = "Name: \(arrData[indexPath.row].name)"
        cell.lblcapital.text = "Capital: \(arrData[indexPath.row].capital)"
        return cell
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let detail:DetailViewController = self.storyboard?.instantiateViewController(withIdentifier: "detail") as! DetailViewController
        detail.strregion = "Region:- \(arrData[indexPath.row].region)"
        detail.strsubregion = " SubRegion:- \(arrData[indexPath.row].subregion)"
        detail.stralpha2 = "Alpha2:-\(arrData[indexPath.row].alpha2Code)"
        detail.stralpha3 = "Aipha3:- \(arrData[indexPath.row].alpha3Code)"
        self.navigationController?.pushViewController(detail, animated: true)
        
        
    }
    
}

Parse JSON Data(GET Method)


2) ---

import UIKit

class tableViewCell: UITableViewCell {
    
    @IBOutlet var lblname: UILabel!
    @IBOutlet var lblcapital: UILabel!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

Output:-



Parse JSON Data(GET Method)



3)----

import UIKit

class DetailViewController: UIViewController {

    @IBOutlet var alpha2: UILabel!
    @IBOutlet var alpha3: UILabel!
    @IBOutlet var subregion: UILabel!
    @IBOutlet var region: UILabel!
    var strregion = ""
    var strsubregion = ""
    var stralpha2 = ""
    var stralpha3 = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        alpha2.text = stralpha2
        alpha3.text = stralpha3
        region.text = strregion
        subregion.text = strsubregion
    }

}



Output:-



Parse JSON Data(GET Method)

Comments