# Introduction to Xcode

## โปรเจคของเรา

หลังจากที่เราสร้างโปรเจคเสร็จ สิ่งแรกที่เราจะเห็นคือ หน้า Setting ค่าต่าง ๆ ในโปรเจคของเรา โดยใน**ส่วนแรกตรงกลางจอ** (identity กับ Signing) คือค่าต่าง ๆ ที่เราใส่ตอนสร้างโปรเจคในบทก่อนหน้า

organization name เราสามารถเปลี่ยนได้จากส่วนของ Project document ในด้านขวามือ

![Xcode หลังจาก create project](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LGk9LnxWMiKEaH9nX5o%2F-LGkCQ2tSq-eAu3vuyBX%2FScreen%20Shot%202018-07-06%20at%2022.28.24.png?alt=media\&token=aa365cf0-c3e6-499d-b530-5d9300fe37af)

ในส่วนของ Deployment Info จะเป็นส่วนที่กำหนดเพิ่มเติม โดยทั่วไปเราจะดูส่วน&#x20;

**Deployment Target** ระบุว่า iOS version ขั้นต่ำที่เราจะรองรับ\
**Devices** เป็น iPhone หรือ iPad หรือว่าทั้งคู่ (Universal)\
**Main Interface** ระบุว่า Storyboard แรกที่จะใช้งานคืออันไหน กรณีนี้คือ Main.storyboard\
**Device Orientation** ระบุว่าเรารองรับหน้าจอแนวไหน แนวตั้งหรือแนวนอน

![Deployment Info](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LGk9LnxWMiKEaH9nX5o%2F-LGkCxAwUMqwuzuWnvy6%2FScreen%20Shot%202018-07-06%20at%2022.30.30.png?alt=media\&token=5aa40b1e-7398-48de-8f09-eab14fc86b6b)

## Navigator

ด้านซ้ายมือจะเป็น Navigator ไปยังส่วนต่าง ๆ ที่เรามักจะใช้บ่อยคือ

**Project Navigator** ใช้ในการดูและเข้าถึงไฟล์ต่าง ๆ ในโปรเจคของเรา\
**Search** ใช้ในการค้นหา\
**Issue** ใช้แสดง warning และ error ต่าง ๆ ที่เกิดขึ้นในแอพของเรา\
**Test** ส่วนที่แสดงรายการเทสเคส และผลลัพธ์ทั้งหมดของโปรเจคเรา\
**Log** ส่วนที่แสดง log การทำงานต่าง ๆ เช่น Build log, Test log&#x20;

เมื่อเราสร้างเป็น Single Page App เสร็จแล้ว Xcode จะสร้างไฟล์ต่าง ๆ ให้ดังนี้

1. **AppDelegate.swift** จะเป็นไฟล์ที่ทำให้เราเข้าถึง event สถานะต่าง ๆ ของแอพ จะกล่าวถึงอีกทีใน [App's life cycle](https://supakit.gitbook.io/ios-app/apps-life-cycle)
2. **ViewController.swift** เป็น controller แรกที่ Xcode สร้างมาให้ผูกกับหน้าจอแรกใน storyboard
3. **Main.storyboard** ใช้ในการสร้างหน้าจอและจัดการการเชื่อมโยงหน้าจอต่าง ๆ แบบแผนภาพ
4. **Assets.xcassets** ใช้ในการเก็บรูปต่าง ๆ เช่น รูป icon ของ แอพ
5. **LaunchScreen.storyboard** ใช้ออกแบบหน้าจอในขณะที่โหลดเปิดแอพ
6. **Info.plist** ใช้ในการคอนฟิกค่าต่าง ๆ ของแอพ

![ตัวอย่าง Project Navigator](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LGk9LnxWMiKEaH9nX5o%2F-LGkCuUionFKBpNZcngo%2FScreen%20Shot%202018-07-06%20at%2022.29.34.png?alt=media\&token=ed92537a-2779-4d05-82bb-29c697380955)

{% hint style="info" %}
เราสามารถกด cmd + 1, cmd + 2, +3, +4, ... ในการสลับ navigator ต่าง ๆ ได้
{% endhint %}
