TourApp (6)
Api 적용하기
우선 json으로 만든 파일을 웹사이트에 올려 api처럼 가져오게 했다.
이후, Medium 글을 통해서 코드를 작성했다.
이글을 통해서 작성한것은 바로 Generic을 사용했다는 점이다. 이전에 Generic을 사용해본적이 없기에 이번에는 좀 사용하면서 내걸로 조금씩 만들고 싶었다.
ApiModel 만들기
struct ApiModel: Codable {
let tours: [Tour]
}
enum NetworkError: Error {
case badUrl
case invalidRequest
case badResponse
case badStatus
...
TourApp (5)
회고중 있었던일 정리
오늘은 크게 한게 없어서 같이 공부하던분의 문제점을 좀 같이 해결하면서 있었던 일을 정리해보려한다.
문제점
우선 문제는 이전에 scrollview를 사용하려할때 Frame을 설정하지않으면 사이즈가 바뀌게되는데 이때 나는 귀찮아서 frame을 수동으로 설정을 주고 하다가 귀찮아서
Scrollview를 해제하고 그냥 Vstack을 사용하고 넘어갔다.
근데 팀원분은 사이즈를 나처럼 고정값이 아닌 Device에 따라서 이미지를 유동적으로 설정하고 싶다고 했다.
Text는 괜찮았으나 Tabview에서 이미지가 제대로 사이즈 조절이 안되는게 문제였다.
여러시도
코드는 팀원분것이 아닌 내걸로...
TourApp (4)
json 적용하기
우선 json 양식으로 파일을 바꿔준다.
이때 이전과 특이점이라면 json 로드가 from server가 아닌 from local이라는것.
모델링
모델링을 해준다.
struct JsonModel: Codable {
let tours: [Tour]
}
// MARK: - Tour
struct Tour: Codable {
let title: String
let imageURL: String
let description, address: String
let latitude, longitude: Double
let resList: [ResList]
...
TourApp (3)
DetailView 꾸미기 & PageView 꾸미기
Page view 꾸미기
이전에 회고를 하던도중 Tabview를 통해 UIKit의 TabBarViewController로 쓸수있고 이미지를 페이징하면서 넘기는 방식으로도 사용이 가능하다고 하여 그걸 적용해보기로했다.
@State private var currentPage: Int = 0
TabView(selection: $currentPage.animation()) {
ForEach(lists.indices, id: \.self) { index in
VStack {
...
TourApp (2)
DetailView 꾸미기
MapKit 사용하기
먼저 import를 해준다.
내용은 사이트
Map(position: $cameraPosition) {
Annotation(title, coordinate: coordinate) {
ZStack {
Image(systemName: "flag.checkered")
}
}
}
기본적인건 Map()이고 Annotation pin도 UIKit과는...
TourApp (1)
이번엔 그냥 간단하게 관광지 소개 앱을 만들어 보려고 한다.
지금은 간단하게 하려고 하고 나중에 조금 더 발전 시킨다면 그때는
Grid를 사용해서 꾸미지 않을까나
List를 사용했고 기본적인것은 패스
이번엔 SwiftModel을 사용하지 않고 만들어 보려고 한다.
struct TourModel: Hashable {
var title: String
var image: String
func hash(into hasher: inout Hasher) {
hasher.combine(title)
}
}
SwiftModel을 사용할때는 class...
To Do List (5)
수정기능 마무리
func modifyList(title: String) {
let i = todoLists.firstIndex { list in
list.title == title
}
todoLists[i!].title = title
}
함수를 이렇게 적용하였으나
바뀌지 않았다.
생각해보니 파라미터를 잘못했다.
func modifyList(currentTitle: String, modifiedTitle: String) {
let i = todoLists.firstIndex { list in
list...
To Do List (4)
수정 기능 추가하기
Leading edge부에도 SwipeAction을 추가하여 수정을 하게 만들어보려고한다.
VStack {
List(todoLists, id: \.self) { list in
CellView(isOn: list.isCompleted,
title: "\(list.title) id: \(list.id)")
.swipeActions(edge: .trailing) {
Button(action: {
...
631 post articles, 79 pages.