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 ,...
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)
}
}
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:-
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:-
Comments
Post a Comment