브래의 슬기로운 코딩 생활
과제 4 -맛집 앱 만들기 본문
▣ 스토리 보드 화면
▣ 앱 실행 화면
첫 번째 View Controller 화면이다.
Table View를 사용해서 섹션별로 인덕대학교 근처 음식점을 화면에 출력했다.
(모든 데이터를 입력하면 앱 만드는데 오랜 시간이 소요될 것 같아 일부만 입력했다.)
- 소스 -
import UIKit
var items = ["김가네김밥 인덕대점", "하다식당 월계직영점", "고빠루", "민들레 초밥", "한끼뚝딱", "벼락이네띵똥땡키친", "소문난규리네맛집", "오미일번지", "오늘은돈부리", "맘스컵주먹밥", "쉐프밥버거", "담꾹 월계점", "BBQ치킨 월계행복점", "키라키라윤", "인덕대학교 푸드코트", "한솥도시락 인덕대앞점"]
var itemsImageFile = "dot.png"
class TableViewController: UITableViewController {
@IBOutlet var tvListView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "mycell", for: indexPath)
cell.textLabel?.text = items[indexPath.row]
cell.imageView?.image = UIImage(named: itemsImageFile)
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "sgDetail" {
let cell = sender as! UITableViewCell
let indexPath = self.tvListView.indexPath(for: cell)
let detailView = segue.destination as! DetailViewController
detailView.receiveItem(items[(indexPath?.row)!])
}
}
}
- 두 번째 View Controller 이다.
- 첫 번째 화면에서 음식점을 선택하여 터치했을 때, 두 번째 화면으로 넘어가며 두 번째 화면에선 지도를 볼 수 있고 메뉴보기 버튼도 사용할 수 있게 기능을 추가하려고 했으나 일일이 전부 적용하는 것이 번거롭기도 하고 구글 지도를 보여주는 것이 더 깔끔할 것 같아 맵킷 대신 웹킷을 임포트 하여 웹브라우저를 보여주도록 하였다.
- 소스 -
import WebKit
import UIKit
class DetailViewController: UIViewController{
@IBOutlet weak var Web: WKWebView!
var receiveItem = ""
@IBOutlet weak var lblItem: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
lblItem.text = receiveItem
var myURL = URL(string:"")
switch lblItem.text {
case "김가네김밥 인덕대점":
break
case "하다식당 월계직영점":
myURL = URL(string: "https://www.google.co.kr/maps/place/%ED%95%98%EB%8B%A4%EC%8B%9D%EB%8B%B9+%EC%9B%94%EA%B3%84%EC%A7%81%EC%98%81%EC%A0%90/data=!3m1!4b1!4m5!3m4!1s0x357cbb2c6722b8ff:0x9bec6d3d889b474a!8m2!3d37.6338021!4d127.0582658?hl=ko")
break
case "고빠루":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EA%B3%A0%EB%B9%A0%EB%A3%A8/data=!3m1!4b1!4m5!3m4!1s0x357cbbef4a7df7e5:0x1cd2b71ac1562011!8m2!3d37.6285574!4d127.0549083?hl=ko")
break
case "민들레 초밥":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EB%AF%BC%EB%93%A4%EB%A0%88+%EC%B4%88%EB%B0%A5/data=!3m1!4b1!4m5!3m4!1s0x357cbb0a6148c903:0xb6e083b5674264b0!8m2!3d37.6333832!4d127.057717?hl=ko")
break
case "한끼뚝딱":
myURL = URL(string: "https://www.google.co.kr/maps/place/%ED%95%9C%EB%81%BC%EB%9A%9D%EB%94%B1/data=!3m1!4b1!4m5!3m4!1s0x357cbbe68c51c835:0x66eddfc6b7f042f0!8m2!3d37.6324841!4d127.0572707?hl=ko")
break
case "벼락이네띵똥땡키친":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EB%B2%BC%EB%9D%BD%EC%9D%B4%EB%84%A4%EB%9D%B5%EB%98%A5%EB%95%A1%ED%82%A4%EC%B9%9C/data=!3m1!4b1!4m5!3m4!1s0x357cbbe64fced3d5:0x54ba9a1d4a91688f!8m2!3d37.6310784!4d127.0582843?hl=ko")
break
case "소문난규리네맛집":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EC%86%8C%EB%AC%B8%EB%82%9C%EA%B7%9C%EB%A6%AC%EB%84%A4%EB%A7%9B%EC%A7%91/data=!3m1!4b1!4m5!3m4!1s0x357cbbe65ca91e93:0xb050784cfb958b56!8m2!3d37.6313358!4d127.0577961?hl=ko")
break
case "오미일번지":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EC%98%A4%EB%AF%B8%EC%9D%BC%EB%B2%88%EC%A7%80/data=!3m1!4b1!4m5!3m4!1s0x357cbbe65d200dbf:0x44bcf4081d957271!8m2!3d37.6314346!4d127.0576408?hl=ko")
break
case "오늘은돈부리":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EC%98%A4%EB%8A%98%EC%9D%80%EB%8F%88%EB%B6%80%EB%A6%AC/data=!3m1!4b1!4m5!3m4!1s0x357cbbebd7ba9ebf:0x39ffbaad34733c86!8m2!3d37.6318189!4d127.0584822?hl=ko")
break
case "맘스컵주먹밥":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EB%A7%98%EC%8A%A4%EC%BB%B5%EC%A3%BC%EB%A8%B9%EB%B0%A5/data=!4m11!1m3!2m2!1z66eY7Iqk7Lu07KO866i567Cl!6e5!3m6!1s0x357cbbe68bed0825:0x9def73e090be5b0c!8m2!3d37.6323439!4d127.0572135!15sChLrp5jsiqTsu7Tso7zrqLnrsKVaFiIU66eY7IqkIOy7tCDso7zrqLnrsKWSAQpyZXN0YXVyYW504AEA!16s%2Fg%2F11g0kj4g6q?hl=ko")
break
case "쉐프밥버거":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EC%89%90%ED%94%84%EB%B0%A5%EB%B2%84%EA%B1%B0/data=!4m5!3m4!1s0x357cbbe8ab8561f3:0xecc92d0820edd804!8m2!3d37.6298546!4d127.0563432?hl=ko")
break
case "담꾹 월계점":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EB%8B%B4%EA%BE%B9+%EC%9B%94%EA%B3%84%EC%A0%90/data=!3m1!4b1!4m5!3m4!1s0x357cbb4edf7163c7:0x4b5a885aff4e4570!8m2!3d37.6299205!4d127.0580649?hl=ko")
break
case "BBQ치킨 월계행복점":
myURL = URL(string: "https://www.google.co.kr/maps/place/BBQ%EC%B9%98%ED%82%A8+%EC%9B%94%EA%B3%84%ED%96%89%EB%B3%B5%EC%A0%90+(BSK)/data=!3m1!4b1!4m5!3m4!1s0x357cbbf448423727:0x94d70737a53318d4!8m2!3d37.6332166!4d127.0576104?hl=ko")
break
case "키라키라윤":
myURL = URL(string: "https://www.google.co.kr/maps/place/%ED%82%A4%EB%9D%BC%ED%82%A4%EB%9D%BC%EC%9C%A4/data=!3m1!4b1!4m6!3m5!1s0x357cbbe880f964f7:0xa535cac345266ca8!8m2!3d37.6290993!4d127.0586774!16s%2Fg%2F11fqtmq0_f?hl=ko")
break
case "인덕대학교 푸드코트":
myURL = URL(string: "https://www.google.co.kr/maps/place/%EC%9D%B8%EB%8D%95%EB%8C%80%ED%95%99%EA%B5%90+%ED%91%B8%EB%93%9C%EC%BD%94%ED%8A%B8/data=!3m1!4b1!4m5!3m4!1s0x357cbb6ee3c78ffb:0xe01e18d6f8befde5!8m2!3d37.6298987!4d127.0554424?hl=koo")
break
case "한솥도시락 인덕대앞점":
myURL = URL(string: "https://www.google.co.kr/maps/place/%ED%95%9C%EC%86%A5%EB%8F%84%EC%8B%9C%EB%9D%BD+%EC%9D%B8%EB%8D%95%EB%8C%80%EC%95%9E%EC%A0%90/data=!3m1!4b1!4m5!3m4!1s0x357cbb2141451d0b:0x674383c8b5c07682!8m2!3d37.6288672!4d127.0566373?hl=ko")
break
default:
break
}
let myRequest = URLRequest(url: myURL!)
Web.load(myRequest)
}
func receiveItem(_ item:String){
receiveItem = item
}
}
'1 - 겨울방학 > iOS 앱 개발자 워크숍' 카테고리의 다른 글
과제 5 - Swift MapKit 사용 설명서 ppt (0) | 2023.02.12 |
---|---|
과제 3 -학기 말 과제 오토 레이아웃 적용 스크린 샷 (0) | 2023.02.01 |
과제 2 - Swift 문법 정리 ,자신의 글로 오토레이아웃 개념 정리 (0) | 2023.01.27 |
[과제 1] 개발자 기술 면접, IT 기술 면접 정리 (0) | 2023.01.19 |
[개강 과제] 회사 담당업무, 자격요건, 우대사항 조사 (0) | 2023.01.16 |