Using UI Table View With Swift

Related tags

Utility swift
Overview

News-App

- Apple 관련 기사를 보여주는 News app을 만들 것입니다. - 자세한 과정은 리드미에 있습니다.

Table View와 Table view controller

  • Table View : Table의 크기를 지정할 수 있다.
  • Table View Controller: 전체의 뷰가 하나의 테이블

Table View

  1. Table view 구성요소 결정하기
  • 어떤 데이터로 구성할 것인가.
  • 몇 개의 데이터로 이루어져 있는가.
  • 행 클릭시 발생할 이벤트 (옵션)
  1. Class 상송
  • UITableViewController, UITableViewDataSource 상속

  • 발생한 Error는 Fix 버튼을 눌러 해결할 수 있다.

  1. 결과

Table View (Dynamic)

  1. Table View Cell 추가

  1. Lable 추가 및 class와 연결

  • Lable은 cell 안에 추가한다.

  • Table View를 보면 Dynamic Prototypes가 설정된 것이 보일 것이다.
  1. 결과화면

추가) 타입캐스팅 as

  • 부모와 자식 간의 관계를 정하는데에 있어 친자를 확인하는 용도이다.
  1. as?
  • 안전한 추론 방법이다. (내가 자식이 맞니?)
  1. as!
  • 강제로 추론하는 방법이다. (내가 자식이 맞아!)

News App

  1. HTTP 통신
  • urlsession
  1. JSON 데이터 형태
  • 정의: Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷
  • 간단히 말하자면, 네트워크에서 통신 내에서 데이터를 주고받을 때 JSON으로 주고받는 데이터 형태
  • 기본 형태: {"key":"value"} 또는 {["value","value","value"]}
  • 추가: {[{"key":"value"}, {"key":"value"}, {"key":"value"}]} 이러한 배열로 선언 가능
  1. 구현
  • 위 결과화면에서 숫자(인덱스)가 테이블뷰에 있는 것을 볼 수 있다.
  • 이를 News API에서 정보를 받아오고, 숫자(인덱스) 대신 뉴스의 title을 출력하고자 한다.
  1. API 불러오기
  • News API 접속 후 개인 API 키 발급
let task = URLSession.shared.dataTask(with: URL(string: "https://newsapi.org/v2/everything?q=apple&from=2021-12-07&to=2021-12-07&sortBy=popularity&apiKey=KEY_VALUE")!) { (data, response, error )in
// json 처리
}
  • URLSessio.shared.dataTask의 함수 원형을 보면 URLSessionDataTask를 반환하기 때문에 변수에 저장한다.
  1. json 처리 코드

(1) Dictionary

  • Swift의 json = Dictionary라고 생각하면 된다.
  • key와 value가 배열에 담겨있는 형태이다.
let dic: [String: String] = ["key": "value"]

만약, value의 값이 일정하지 않다면 String 대신 Any로 선언한다.

(2) JSONSerialization

  • Dictionary를 jsonObject로 타입으로 변경하는 것이다.
let json = try JSONSerialization.jsonObject(with: dataJson, options: []) as! Dictionary<String, Any>

반드시 예외처리를 통해 json이 처리된 경우에만 실행되도록 do catch문 안에 작성해야한다.

(3) 특정 값 가져오기

let articles = json["articles"] as! Array<Dictionary<String, Any>>
self.newsData = articles

받아온 json에서 Key 값이 article인 것을 articles라는 상수에 저장하고, 클래스 내부 newsData에 저장한다.

(4) Table View (UI)에 표현

DispatchQueue.main.async {
    self.TableViewMain.reloadData()
}
  • tableView 함수에 값을 변경하는 코드를 따로 작성해야한다.
  1. 결과 화면

News App Detail

  • 위에서 만든 뉴스 제목을 클릭하면, 뉴스 내용을 볼 수 있도록 구현하고자 한다.
  1. 클릭 시 이동할 수 있도록 구현
  1. Navigation controller 추가

  1. 새로 생긴 Root view 삭제

  1. 기존 Table view를 root view로 설정

  1. 뉴스 상세 화면
  1. View Controller 추가

  1. View controller scene에 id 부여 보통 클래스명과 동일하게 설정한다. (NewsDetailController)

  1. Class 생성 후 위 Scene과 연결

  2. Image View (1) Image view 추가

(2) constraint 추가

(3) view의 content mode 설정

  • Aspect Fit으로 설정

  1. 뉴스 내용 (1) Lable 추가

(2) Lable과 Image view 사이 constraint 추가

  • vertical spacing

스크린샷 2021-12-09 오후 9 32 08

(3) Label contraint 추가

  • 좌, 우 추가
  1. Image view, Label을 class와 연결 (1) Image url 값 받기 (2) descriptrion 값 받기
  1. 값 넘기기
  • tableView delegate
  • storyboard(segue) 총 2가지 방법을 사용할 수 있다.
  1. 화면 이동

스크린샷 2021-12-09 오후 10 59 23

  1. 결과화면

You might also like...
AnimeListSwiftUI - Anime quote list built with MVVM Swift 5 using Async/Await

How To In SwiftUI Async/Await AnimeListSwiftUI - Anime quote list built with MVVM Swift 5 using Async/Await Clones Clubhouse - App clone built with Sw

This is a app developed in Swift, using Object Oriented Programing, UIKit user interface programmatically, API Request and Kingfisher to load remote images

iOS NOW ⭐ This is a app developed in Swift, using Object Oriented Programing, UIKit user interface programmatically, API Request and Kingfisher to loa

Parsing indeterminate types with Decodable and Either enum using Swift

Decodable + Either Parsing indeterminate types with Decodable and Either enum us

Verify New Zealand COVID Passes in iOS apps using Swift

NzCovidPass-Swift Swift library for verification of the NZ Covid Vaccination Pas

TypeStyle is a handy app for iPhone and iPad that generates text using different styles and decorations. It is a native Swift iOS app.
TypeStyle is a handy app for iPhone and iPad that generates text using different styles and decorations. It is a native Swift iOS app.

TypeStyle TypeStyle is a handy app for iPhone and iPad that generates text using different styles and decorations. It is a native Swift iOS app. Featu

CurrencyConverter-swift - App that exchanges currencies using ECB rates
CurrencyConverter-swift - App that exchanges currencies using ECB rates

CurrencyConverter App that exchanges currencies using ECB rates

 WWDCKit - Creating and Using a Swift Package
WWDCKit - Creating and Using a Swift Package

WWDCKit - Creating and Using a Swift Package 1. Create the Package in Xcode Navigate to File New Package. Give the Package a name e.g "WWDCKit".

Monitor changes to files and directories using kernel event notifications (kqueue) in Swift

SKQueue SKQueue is a Swift libary used to monitor changes to the filesystem. It wraps the part of the kernel event notification interface of libc, kqu

Protected is a Swift Package that allows you to specify the read and write rights for any type, depending on context by using Phantom types
Protected is a Swift Package that allows you to specify the read and write rights for any type, depending on context by using Phantom types

Protected is a Swift Package that allows you to specify the read and write rights for any type, depending on context by using Phantom types

Owner
Jiwon
Jiwon
UIViewController extension to present view / view controller as bottom-half modal.

UIViewController extension to present view / view controller as bottom-half modal. Installation CocoaPods pod 'SemiModalViewController' Swift Package

Winter 78 Mar 3, 2022
Project shows how to unit test asynchronous API calls in Swift using Mocking without using any 3rd party software

UnitTestingNetworkCalls-Swift Project shows how to unit test asynchronous API ca

Gary M 0 May 6, 2022
Swift-HorizontalPickerView - Customizable horizontal picker view component written in Swift for UIKit/iOS

Horizontal Picker View Customizable horizontal picker view component written in

Afraz Siddiqui 8 Aug 1, 2022
Array diffs as collection view wants it - now in Swift ✨

Doppelganger-Swift Inspired by Doppelganger written in Swift Features Removes confusion from users when data changes Animates moving, inserting and de

Szymon Maślanka 9 Jul 9, 2019
MarvelComics-ViewCode é um app para fins de estudo, desenvolvido em Swift utilizando View Code.

MarvelComics-ViewCode - iOS O MarvelComics-ViewCode é um app para listar todos os personagens da Marvel, implementado em Swift utilizando View Code co

Alan Silva 1 Jun 18, 2022
Simple way to set up half modal view

HalfModalView Requirements iOS 9.0+ Xcode 10.0+ Swift 4.0+ Example Installation CocoaPods is a dependency manager for Cocoa projects. You can install

Choi SeungMyeong 5 Nov 14, 2022
Plugin and runtime library for using protobuf with Swift

Swift Protobuf Welcome to Swift Protobuf! Apple's Swift programming language is a perfect complement to Google's Protocol Buffer ("protobuf") serializ

Apple 4.1k Dec 28, 2022
A Swift package for rapid development using a collection of micro utility extensions for Standard Library, Foundation, and other native frameworks.

ZamzamKit ZamzamKit is a Swift package for rapid development using a collection of micro utility extensions for Standard Library, Foundation, and othe

Zamzam Inc. 261 Dec 15, 2022
A simple Pokedex app written in Swift that implements the PokeAPI, using Combine and data driven UI.

SwiftPokedex SwiftPokedex is a simple Pokedex app written by Viktor Gidlöf in Swift that implements the PokeAPI. For full documentation and implementa

Viktor G 26 Dec 14, 2022
Swift code to programmatically execute local or hosted JXA payloads without using the on-disk osascript binary

Swift code to programmatically execute local or hosted JXA payloads without using the on-disk osascript binary. This is helpful when you have Terminal access to a macOS host and want to launch a JXA .js payload without using on-disk osascript commands.

Cedric Owens 20 Sep 27, 2022