Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Firebase
- Swift
- UIStackView
- Apple Developer Academy
- Project
- ios
- task.yield()
- backend
- Coding Test
- UITableView
- cloud functions
- swift concurrency
- Sendbird
- WWDC22
- fcm
- github
- SwiftUI
- tabman
- app intents
- widgetkit
- Complication
- Tuist
- Delegate Pattern
- spring
- UIDatePicker
- 코테
- createml
- Flutter
- coreml
- watchkit
Archives
- Today
- Total
azhy의 iOS 이야기
[iOS/Swift] UITableView scrollToRow, 특정 셀로 스크롤 이동 본문
2022년 7월 7일에 작성됨
scrollToRow(at:at:animated:)
사실 방법은 정말 간단합니다. 바로 scrllToRow를 사용하면 되는 데 사용법은 다음과 같습니다.
// 날짜 안지난 스토리로 스크롤 이동
let startIndex = IndexPath(row: StoryDay().storyArray.firstIndex(of: StoryDay().storyArray.filter
{ $0 > Int(CoupleTabViewModel.publicBeginCoupleDay)! }.min()!)!, section: 0)
self.tableView.scrollToRow(at: startIndex, at: .top, animated: false)
사실 코드는 별거 없습니다. 자신이 원하는 위치의 IndexPath를 구해서 그 위치로 셀을 이동시켜 주면 됩니다.
주의할 점은 이동시키고 싶은 위치의 index 값을 정확히 알아야 하고 at 부분을 .top으로 하면 상단으로 이동하고, .bottom으로 하면 하단으로 이동합니다.
추가로 animated를 true로 하면 이동하는 애니메이션 효과가 들어갑니다.
이 코드는 날짜가 안 지난 storyArray value 중에서 가장 작은 value의 위치로 이동시키는 코드입니다.
더욱 간단한 코드를 예시로 보면
let endIndex = IndexPath(row: Message.messages.count - 1, section: 0)
self.tableView.scrollToRow(at: endIndex, at: .bottom, animated: true)
카카오톡을 사용한다고 생각해 봅시다. message를 보내거나 받으면 그 message 기준으로 스크롤이 이동해야 합니다.
messages.count - 1 row로 이동하는데 그 index 기준으로 하단으로 이동합니다. 이렇게 해석하면 쉽게 이해할 수 있습니다.
'Swift' 카테고리의 다른 글
[iOS/Swift] Lottie 를 사용해서 애니메이션을 만드는 법 (2) | 2024.11.12 |
---|---|
[iOS/Swift] dismiss 하고 present 넘어가기 (Presented vs Presenting ViewController) (0) | 2024.11.12 |
[iOS/Swift] UITableView, 셀 재사용 시 발생하는 문제 (0) | 2024.11.12 |
[iOS/Swift] View와 Button 에 click action 등록하기 (0) | 2024.11.12 |
[iOS/Swift] delegate pattern, 데이터 주고 받기 (0) | 2024.11.11 |