iOS Project Manager Client

Overview

08-iOS-Project-Manager-Client

프로젝트 매니저


STEP 1 프로젝트 할일 리스트



기능구현

UI구현방식 : 코드

아키텍쳐 :

  • ProjectManagerViewController : NavigationViewController위에 StackView(axis: horizontal)를 올리고 각각 StackView내에 TitleLabel과 TableView를 StackView(axis: vertical)로 묶어 올렸습니다.

  • NewTodoFromViewController(Modal View) : NavigationViewController 위에 StackView(axis: horizontal)를 올리고 그 위에 TextField, DatePicker, TextView를 올렸습니다.

  • TodoListCell(Custom Cell) : Cell위에 StackView를 올리고 위에 titleLabel, descriptionLabel, DateLabel을 올렸습니다.

Jul-13-2021 22-57-48


Drag & Drop :

  • Cell내에 존재하는 titleLabel, descriptionLabel, dateLabel에 존재하는 세개의 데이터를 한번에 ItemProvider로써 변환하기 위해 CellData라는 타입을 만들었습니다.

  • 같은 테이블 뷰 Cell을 이동시에는 DataSource메서드인 moveRowAt을 활용하여 Drop이 이루어지고, 다른 테이블 뷰로의 이동시에는 같은 기능을 Drop Delegate 메서드인 dropSessionDidUpdate와 performDropWith 메서드가 해줍니다.

같은 테이블 drag and drop

drag and drop to 다른 테이블뷰


새로운 Cell 추가,삭제 및 수정 :

  • Cell추가 : Delegate패턴을 이용하여 NewTodoFormViewController가 ProjectManagerViewController의 권한을 위임받아 데이터를 저장하는 배열에 append를 시키고 TableView를 reload 시키고 titleLabel에 개수를 갱신합니다.

  • Cell삭제 : DataSource의 editingStyle 메서드를 사용하여 구현하였고 삭제시 TableView위에 있는 TitleLabel에 있는 셀의 개수를 Reload를 시켜줍니다.

  • Cell수정 : Delegate패턴을 이용하여 Cell추가 기능과는 반대로 ProjectManagerViewController가 NewTodoFormViewController의 권한을 위임받아 Cell에 있는 데이터를 TextField, DatePicker 그리고 TextView에 전달해줬습니다. Edit버튼으로 EditingMode를 활성화하여 데이터를 수정하고 Done을 눌러 저장할 시 권한위임을 반대로하여 원래 Data 배열의 값을 갱신 시켜줬습니다.

NewMemo추가

delete

edit-done

타임라인

06.28~07.03

07.04~07.11

  • UIDatePicker
  • VC 데이터전달
  • StackView
  • TextField
  • TextView
  • UIBarButtonItem
  • UITableView swipe Delete
  • drag and drop

07.12~07.16

  • deleteRows()
  • insertRows()
  • editMode


트러블슈팅 (Troubleshooting)

  1. delegate패턴 사용시 delegate위임 꼭 해주기
  2. tableView에서 cell사이에 간격을 줄 수 없었다.
    • Section에 빈 headerView를 추가하여 변경하였다.
  3. cell을 추가할 때 data의 Array의 Index값을 indexPath.row로 주었더니 계속 동일한 element가 호출되었다.
    • data Array의 index값을 indexPath.section으로 변경하여 해결
  4. stackView 내에 존재하는 contents들의 layout을 직접 지정해주었더니 경고메세지발생
    • contents들의 layout을 잡아줄 때는 위치는 변경하지않고 크기만 조절해줘야한다.
  5. cell 사이에 간격을 주기 위해 section을 사용하였는데, drag and drop을 구현함에 있어서 row관련 메서드가 많아서 난황을 겪고 있음
    • 일단 section보다는 row로 해보는 방향으로!!


참고 링크

참고 링크 세부사항

공식문서

Drag and Drop

스토리보드 없이 코드로 짜기

VC 데이터 전달

DatePicker

Navigation bar

UIToolbar

UITextField

UIModalPresentation

StackView

UIBarButton

TableViewCell Swipe Delete

You might also like...
Socket.io iOS and OSX Client compatible with v1.0 and later
Socket.io iOS and OSX Client compatible with v1.0 and later

SocketIO-Kit ⚠️ This project is no longer maintained. Please use the official framework Socket.IO-Client-Swift. SocketIO-Kit is a Socket.io iOS client

📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.
📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.

Apollo iOS is a strongly-typed, caching GraphQL client, written in Swift. It allows you to execute queries and mutations against a GraphQL server, and

Frp Client Framework for iOS

Frp Client Framework for iOS README | 中文文档 base on https://github.com/fatedier/frp v0.37.1(the lastest at 2021.10) ios framework,it can run on your ip

Minecraft server RCON client for iOS/macOS

iRCON Minecraft server RCON client for iOS/macOS. Features Full remote console window Player list with ability to easily op, kick, ban, etc. Quickly s

SSH and SFTP client for iOS
SSH and SFTP client for iOS

Parrot.Flo SSH and SFTP client for iOS https://parrot-flo.site BUG ? Please Submit new issue Contact me Hey ? do you want ask about all my tools ? you

The HTTP library used by the Spotify iOS client
The HTTP library used by the Spotify iOS client

Authentication and back-off logic is a pain, let's do it once and forget about it! This is a library that allows you to centralise this logic and forg

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.
This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and Apple TV app. With this Framework you can create iPh

An iOS library to route API paths to objects on client side with request, mapping, routing and auth layers

WANetworkRouting Developed and Maintained by ipodishima Founder & CTO at Wasappli Inc. Sponsored by Wisembly A routing library to fetch objects from a

The official iOS client library for api.video
The official iOS client library for api.video

api.video iOS client api.video is the video infrastructure for product builders.

Owner
Kioding87
더디더라도 go straight, be a iOS dev
Kioding87
iOS client for the Brewfactory project - brew your own beer

BrewMobile iOS client for the Brewfactory project. Read the stories of upgrading BrewMobile to ReactiveCocoa & Swift on AllTheFlow. What is this? App

brewfactory 195 Dec 18, 2022
🌸 Powerful Codable API requests builder and manager for iOS.

This lib is about network requests with blackjack, roulette and craps! Using it you will be able to convert your massive API layer code into an awesom

CodyFire 251 Jan 8, 2023
Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.

BlueSocket Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux. Prerequisites Swift Swift Open Source swift-5.1

Kitura 1.3k Dec 26, 2022
Switch viewcontroller like ios task manager

Kaeru Kaeru can switch ViewController in NavigationController like iOS task manager UI (after iOS 9). Movie Usage You can use HistoryNavigationControl

bannzai 508 Dec 7, 2022
A progressive download manager for Alamofire

ALDownloadManager A progressive download manager for Alamofire (Alamofire下载器) The default support breakpoint continues. Sequential Download(顺序下载 ) Dow

null 48 May 1, 2022
This is my attempt to make this repo available on swift package manager

Parse LiveQuery Client for iOS/OSX PFQuery is one of the key concepts for Parse. It allows you to retrieve PFObjects by specifying some conditions, ma

Benji 0 Nov 3, 2021
A modern download manager based on NSURLSession to deal with asynchronous downloading, management and persistence of multiple files.

TWRDownloadManager TWRDownloadManager A modern download manager for iOS (Objective C) based on NSURLSession to deal with asynchronous downloading, man

Michelangelo Chasseur 407 Nov 19, 2022
Say goodbye to the Fat ugly singleton Network Manager with this Network Layer

MHNetwork Protocol Oriented Network Layer Aim to avoid having bloated singleton NetworkManager Philosophy the main philosophy behind MHNetwork is to h

Mohamed Emad Hegab 19 Nov 19, 2022
Rayon - Yet another SSH machine manager for macOS

Rayon A server monitor tool for linux based machines using remote proc file syst

Lakr Aream 2.3k Jan 8, 2023
SwiftyReachability is a simple and lightweight network interface manager written in Swift.

SwiftyReachability is a simple and lightweight network interface manager written in Swift. Freely inspired by https://github.com/tonymillion/Reachabil

Antonio Guerra 5 Nov 4, 2022