TIL_20180813 ~ 20180818
13 Aug 2018 | TIL2018.08.13
- segue๋ก nextVC๋์ฐ๊ธฐ์์ nextVC์ didSet์์ ์๋ฌ๊ฐ ๋์ ์ ๋ฆฌ
- ์๋์ฝ๋์์ ๋ณด๋ฉด SearchViewController์ prepare()๋ฉ์๋์์ ์คํ ๋ฆฌ๋ณด๋ segue์ ๋ฐ๋ผ์ ๋์
- segue๊ฐ ์คํ๋๋ฉด์ nextVC์ awakeFromNib() ์คํ.
- ์ด๋ nextVC์ self๋ ์ธ์คํด์คํ๋ ์ํ
- ์์๋ชจ๋์์
nextVC.branchData
์ ๋ฐ์ดํฐ ๊ฐ์ ๋๊ฒจ์ฃผ๋ฉด์ didSet์คํ์ด๋๋๋ฐ - ์ด๋๊น์ง๋ IBOutlet์ ํ๋กํผํฐ๋ nil์ํ
- nextVC๊ฐ ์ธ์คํด์คํ๋ ์ํ์ฌ๋ ๋ทฐ์ปจํธ๋กค๋ฌ์์ ์คํ ๋ฆฌ๋ณด๋๋ก ์ฐ๊ฒฐ๋ IBOutlet๋ค์ ์ฐธ์กฐ๊ด๊ณ๊ฐ ๋ถ๋ช ํํ ์์ ์ด ์๋ค. ์ด๋๊ฐ ๋ฐ๋ก ๊ทธ ์์ ์ธ๋ฏํ๋ค.
- viewDidLoad()๊ฐ ์คํ๋๋ ์์ ์๋ nil์ด์๋ IBOutletํ๋กํผํฐ๋ค์ด ๋ก๋๊ฐ ์๋ฃ๋ ์์
- IBOutlet์ ์ธํ ํ๋ ๋์์ viewDidLoad์์ ํ๋ฉด ๋์ํ๋ค.
// SearchViewController.swift
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "showDetail" else { return }
guard let nextVC = segue.destination as? DetailViewController else { return }
if let indexPath = tableView.indexPathForSelectedRow {
if isFiltering() {
nextVC.branchData = filtered!.branches[indexPath.row]
} else {
nextVC.branchData = list!.branches[indexPath.row]
}
}
}
}
// DetailViewController.swift
var branchData: Branch? {
didSet {
print("didSet")
}
}
override func awakeFromNib() {
super.awakeFromNib()
print(#function)
}
override func viewDidLoad() {
super.viewDidLoad()
setNavigationItem()
setTitle()
setAddress()
setHolidays()
setPhoneNumber()
}
2018.08.14
-
https://developers.naver.com/docs/map/ios/
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ xcode9์ main thread checker๊ฐ ์ฒดํฌํ๋ฉด์ ๋ํ๋๋ ์๋ฌ
- ๋์์ ํ์ง๋ง ๋ฉ์ธ์ค๋ ๋์ฒด์ปค์์ UI๋ฅผ ๋ด๋นํ๋ ๋ถ๋ถ์ ๋ฉ์ธ ์ค๋ ๋์์ ๋์ํ๋๋ก ๊ตฌํํ๋ผ๊ณ ์๋ฌ๋ฅผ ๋ด๊ฒ๋๋ค. (๋์์ ์ ์์ ์ผ๋ก ํจ)
- ์ฐธ๊ณ
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๋์ํ์ง๋ง xcode9๊ธฐ์ค์ผ๋ก๋ ์ฒดํฌํด์ผํ๋ exception์ด๋ผ ์ฒดํน์ ๋์ง๋ง, ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋๋ฌธ์ ์ด๋์ ์๋ฌ๊ฐ ๋๋์ง ์ฝ๋๋ผ์ธ์์ ์ฐพ์ง ๋ชปํ๋ค.
- ์ด๋ฐฉ๋ฒ์ผ๋ก ์ฐพ์ ์ ๋ ์์ง๋ง ์ฐพ์๋ ์ด์ ๋ธ๋ฆฌ์ฝ๋์ชฝ๊น์ง ๋ด๋ ค๊ฐ์ ๋ธ๋ ์ดํฌํฌ์ธํธ๊ฐ ๊ฑธ๋ ค์ ์ด๋์ง ์ ์ ์์โฆ
- ๋ฐํ์์ ์ธ๋ถ api์ ์ค๋ ๋ ์ฒดํน์ ํ์ง ์๋๋ก ์ค์ ํ๋ฉด ์๋ฌ๊ฐ ํ์๋์ง ์๊ณ ์ญ ์คํ
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIApplication setNetworkActivityIndicatorVisible:]
2018.08.15
- ๋ทฐ ์คํ ๋ ์ด์์ ์ก๊ธฐ
- ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชจ๋ธ ๊ตฌํ
- JSONํ์ผ์ด ๋ณ๊ฒฝ๋์ด๋ ๊ทธ๋๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ์ ์ง๋๊ณ ์ ๋ฐ์ดํธ๋๋์ง ํ์ธ
2018.08.16
- AppDelegate์ ์ฝ๋ฐฑํจ์์์ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ / ๊ฐ์ ธ์ฌ๋์ ์๋ฌธ์
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // loadedData๊ฐ ์๋๊ฒฝ์ฐ favoriteList๋ฅผ ์ ์ฅํด์ฃผ์ง ์๊ณ ๊ทธ๋ฅ ๋์ด๊ฐ๋ฉด ํ์ ๋ชจ๋๋ค์์ ์ ๊ทผํ๋ FavoriteList.shared()๋ก ๋ฐ๋ ์ธ์คํด์ค๋ ๋ชจ๋ ๊ทธ๋ฅ Set<Int>()๋ก init์ด ๋๋๊น ์๊ด์์ guard let loadedData = DataStorage<FavoriteList>.load() else { return true } FavoriteList.loadSavedData(loadedData) // Favorite๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๋ ์ธ์คํด์ค๋ก ๋์ฒดํด์ค return true }
// ์ฒซ ์์
application(_:didFinishLaunchingWithOptions:)
applicationDidBecomeActive
// ํ๋ฒํผ
applicationWillResignActive
applicationDidEnterBackground
// ์คํ(๋ฐฑ๊ทธ๋ผ์ด๋์๋ค๊ฐ ๊ทธ๋๋ก ๋ค์๋ฐ๋)
applicationWillEnterForeground
applicationDidBecomeActive
ํ๋ฒํผ ๋๋ฒ ๋๋ฌ์ ์๋ก ์ค์์ดํํ์ฌ ๋๋ ํธ์ถ์์ ํ ์คํธ
applicationWillResignActive
applicationDidEnterBackground
applicationWillTerminate
ํ ์คํธ์, ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋๋ก ๊ฐ๋ ํญ์ ํธ์ถ๋๋ ํจ์
applicationWillResignActive
applicationDidEnterBackground // ์ค๋ซ๋์ active์ํ๊ฐ์๋๋
- ์๋น / ์ง์ง state๋ก ๋ค์ด๊ฐ๋๊ฑฐ ๊ผญ ๋๊ฐ์ฉ ํธ์ถ๋๋๋ฐ ์ด๋ป๊ฒ ๊ตฌ๋ถํ๊ณ ํจ์๋ฅผ ๊ตฌํํด์ผํ ๊น?
- ๋ชจ๋ ๊ตฌํํ๋๊ฒ ์ ์ผ ์ข์ง๋ง, ๋๊ฐ์ ๋์์ ๋ฐ๋ณตํ๊ฒ ํ๊ธฐ ๋ณด๋ค๋ ํด๋น ์ฝ๋ฐฑ๋ค์ด ๋ถ๋ฆฌ๋ ์๊ฐ์ฐจ๋์ ๋ด๊ฐ ์ ์ฅํ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ์ด ๋๋์ง flag๋ฅผ ๋๊ณ flag์ ๋ฐ๋ผ์ ๋์ํ๊ฒ ํ๋๊ฒ ์ข ๋ ๋์ ๋ฐฉ๋ฒ
- ์ฑ๋ธ๋ฆฌ๊ฒ์ดํธ ์ฝ๋ฐฑํจ์ ์ค resignActive๋ applicationWillTerminate๊ฐ์ ํจ์์์ ๋น๋๊ธฐ์์ ์ ํ๋ฉด ํด๋น ์์ ์ด ๋๋ ๋๊น์ง๋ ์ ์ง๋๋ค๊ณ ํ๋ค. ๋ณดํต์ 1๋ถ๋ด์ธ๋ก ์๋ ค์ ธ์์ง๋ง ์๊ฐ์ด ๋ ํ์ํ๋ค๋ฉด await์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ ๊ฒ
2018.08.17
- ํ ์ด๋ธ๋ทฐ ์ ์ ์๋ ๋ณ ์์ด์ฝ์ ๋ฒํผ์ผ๋ก ๋ฐ๊พธ๊ณ state๋ณ๊ฒฝ๋ ๋๋ง๋ค๋ก ํ์๋ณ - ๋ ธ๋์ ๋ณ๋ก ๋ฐ๊พธ๋๊น async๋ก ์์ ํ ํ์๊ฐ ์์ด์ง
- ํ
์ด๋ธ๋ทฐ ์
์ ๋ฐ์ดํฐ๋ฅผ detailํ๋ฉด์์ ๋ฐ๊พธ๊ณ ํ
์ด๋ธ๋ทฐ๋ก ํ๋ฉด์ด ๋์ด๊ฐ๋ ํด๋น ์
์ ์
๋ฐ์ดํธ๋์ง ์๊ณ ํด๋น ์
์ด ํ๋ฉด์์ ์ฌ๋ผ์ก๋ค๊ฐ ๋ํ๋๊ฑฐ๋ search๋์์ ์คํํด์ ํ
์ด๋ธ๋ทฐ๊ฐ reload๋ ๋๋ง ์
์ด ์
๋ฐ์ดํธ๋จ
- ์ ์์ reuse๋ ๋ ๋ฒํผ ์ํ๋ฅผ updateํ ์ ์์๊น ๊ณ ๋ฏผํ๋๋ฐ,
- ์ด๋ฐ ๊ฒฝ์ฐ๋ ํ ์ด๋ธ๋ทฐ์ปจํธ๋กค๋ฌ์์ reload๋ฅผ ๋ฐ๋์ ํด์ค์ผํจ!
- xib๋ก ์ฌ์ด๋๋ฐ ์ฐ๊ฒฐํจ!!!!!!!!!!!!
- ์ฝ๋ ์ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค๊ฐ ๊ทธ๋๋ก reuseํ๋ฉด ์๋ ๊ฑฐ๊ฐ์์.
- ๊ทธ๋ฆฌ๊ณ ์ฌ๋ผ์ด๋ ๋ฉ๋ด์ ๋ค์ด๊ฐ๋ ๋ฉ๋ด ์๊ฐ ๊ทธ๋ฆฌ ๋ง์ง ์์์
- ๋ฒํผ๊ณผ ์คํ๋ทฐ๋ก ๊ตฌํํ๋ฉด ์คํ๋ ค๋ ๋ด๊ฐ ์ํ๋ ์ฝ๋์ ๋ทฐ๋ฅผ ๋ง๋ค ์ ์์๊ฑฐ๊ฐ์์ ๊ตฌํํ๊ณ , ์ผ๋ฐ์ ์ธ ๋ทฐ ์ปจํธ๋กค๋ฌ ์์ ๋์ฐ๋ ๋ทฐ๊ฐ ์๋๋ผ ์ฌ์ด์ฆ๊ฐ ๋ค๋ฅด๊ธฐ๋๋ฌธ์ xib๋ก ํ๋ค.
- ์ปค์คํ ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ง๋ฆ: MainViewController
- ์ฌ๋ผ์ด๋ ๋ฉ๋ด๋ฅผ ๋ซ๋ ๋์์ ํ๋ ๋ฉ์๋๋ ์ด๋์ ๊ตฌํํด์ผํ ๊น?
- (์ฌ๋ผ์ด๋ ๋ฉ๋ด๋ฅผ ๋ซ๋ ๋์์ ์ํ ์ต์ ๋ฒ๋ ์ด๋ ๊ตฌํ๋์ด์ผํ ๊น)
- SlideMenu์์ ๋ซ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด noti POST
- SlideLauncher์์ ๋ฐ์์ dismiss๋ฅผ ๋ฐ๋ก ํด๋ฒ๋ ค์ผํ๋
- delegate์ธ ๋ทฐ์ปจํธ๋กค๋ฌ์์ ๋ฐ์์ dismiss๋ฅผ ํด์ค์ผํ๋..?
2018.08.18
- ์ด๋ฏธ์ง์ ํ ์คํธ ํจ๊ป์๋ ๋ฒํผ ๋ง๋ค๊ธฐ
- ์ฌ์ด๋๋ฐ๋ ๊ฒน์น๋ statusBar ํ๋ฉด์ฒ๋ฆฌ
- ๊ฒฐ๊ตญ ๋ค๋น๊ฒ์ด์ ์ embedํ๊ธฐ๋กโฆ.
Comments