'메모' 카테고리의 다른 글
highlight 적용하기! 무료! (0) | 2022.10.11 |
---|---|
나중에 보려고 카톡에 적어둔것들 (0) | 2022.05.11 |
AppStore에 보이는 항목 (0) | 2022.05.06 |
번역기 사이트 추천 (0) | 2022.05.02 |
링크 NestJS로 배우는 백엔드 프로그래밍 (0) | 2022.03.30 |
highlight 적용하기! 무료! (0) | 2022.10.11 |
---|---|
나중에 보려고 카톡에 적어둔것들 (0) | 2022.05.11 |
AppStore에 보이는 항목 (0) | 2022.05.06 |
번역기 사이트 추천 (0) | 2022.05.02 |
링크 NestJS로 배우는 백엔드 프로그래밍 (0) | 2022.03.30 |
UINavigationController에 붙어있는 ViewController이지만백제스쳐가 동작하지 않는 경우가 왕왕있다.
해당 문제는 제스쳐 이벤트 끼리의 충돌문제인것으로 보인다이때 네비게이션 제스쳐를 하나의 UINavigationController 내부의 viewControllers개수가 하나보다 많을때만 동작하도록 지정해주는 걸 달아주면 이상하게도 동작을 잘한다.
해당 소스는 상단 스택오버플로우의 답에 달린 코드이다.
class NavigationController: UINavigationController, UIGestureRecognizerDelegate {
/// Custom back buttons disable the interactive pop animation
/// To enable it back we set the recognizer to `self`
override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
bringSubviewToFront(_:) (0) | 2022.06.29 |
---|---|
error, building for iOS Simulator, but linking in object file built for iOS, ~ for architecture arm64 (1) | 2022.06.29 |
Xcode를 버전별로 관리하자 (0) | 2022.05.19 |
private(set) 변수를 외부에서 쓰지못하게 막자 (0) | 2022.05.12 |
배열을 그룹별로 분리하기 Dictionary(grouping:, by:) (0) | 2022.04.22 |
https://github.com/RobotsAndPencils/XcodesApp
xocde를 버전별로 설치해서 열수있는 매니저프로그램
버전별로 기본 제공되는 ios os버전이 다르고 버전별 오류가 달라 테스트 및 구형 프로젝트를 돌릴때 유용
error, building for iOS Simulator, but linking in object file built for iOS, ~ for architecture arm64 (1) | 2022.06.29 |
---|---|
네비게이션의 스와이프 백제스쳐가 동작하지 않는다. (0) | 2022.05.19 |
private(set) 변수를 외부에서 쓰지못하게 막자 (0) | 2022.05.12 |
배열을 그룹별로 분리하기 Dictionary(grouping:, by:) (0) | 2022.04.22 |
collectionView의 scrollToItem이 동작하지 않는다. (0) | 2022.03.14 |
insert
append
remove
removeSubrange
기초 자료구조에 대한 내용 (0) | 2023.01.19 |
---|---|
URL.isDirectory (0) | 2022.05.16 |
애플 공홈 튜톨 (0) | 2022.05.13 |
네비게이션의 스와이프 백제스쳐가 동작하지 않는다. (0) | 2022.05.04 |
Alamofire parameters encoding에 대하여 (0) | 2022.05.04 |
Swift 에서는 접근레벨을 5개로 나뉜다
open
public
internal
fileprivate
private
open은 말그대로 open된 소스고 public은 오픈에서 오버라이드와 서브클래싱을 막는다
이렇게 점점 접근 가능한 범위를 줄이고
마지막에 와서는 private, 해당 내역이 선언된 구역에서만 사용가능하게 된다
swift에서는 변수의 get 과 set을 재정의를 해주는게 간편히 가능한데
이와 위의 접근레벨과 섞으면 내부에선 읽고 쓰고, 외부에서는 읽기만 가능한게 만들 수 있다.
단순히 둘이 섞어보자면 아래와같게 하여 값을 보호할 수 있다.
public class AccessLevels {
private var realValue: String = ""
public var value: String {
get {
return realValue
}
}
func function() {
realValue = "real value"
}
}
let test: AccessLevels = .init()
print(test.value) // "\n"
test.function()
print(test.value) // real value
콘솔 출력값은 주석처리한 부분이다
다른 언어에서 get, set 함수를 따로 만들어 사용하는것과 유사하다
실제로 사용하는 변수는 realValue이고 외부에서 해당 값을 보기위해 realValue를 접근하려고하면 오류가 나고
이를 보기위해서는 value를 봐야한다.
사실 이를 더 간편히 만들 수 있는게 있는데 이게바로 이글의 주제인 private(set) 이다.
public class PrivateSet {
private(set) var value: String = ""
func function() {
value = "real value"
}
}
let test: PrivateSet = .init()
print(test.value) // "\n"
test.function()
print(test.value) // "real value"
PrivateSet 클래스는 위의 AccessLevels 클래스와 동일한 기능을 하는 클래스이다
get을 지정해주는 변수와 실제 값을 담아두는 변수가 private(set) 으로 value 하나로 통일되었다.
외부에서 값이 변경되지 않도록 지켜주는 기능또한 여전하다.
private(set) 간편!
네비게이션의 스와이프 백제스쳐가 동작하지 않는다. (0) | 2022.05.19 |
---|---|
Xcode를 버전별로 관리하자 (0) | 2022.05.19 |
배열을 그룹별로 분리하기 Dictionary(grouping:, by:) (0) | 2022.04.22 |
collectionView의 scrollToItem이 동작하지 않는다. (0) | 2022.03.14 |
돈 자리수 표시하기 (0) | 2022.03.08 |