Skip to content

Commit

Permalink
#3 fixed search view
Browse files Browse the repository at this point in the history
  • Loading branch information
JunseokNoh committed Jul 26, 2021
1 parent 455447c commit 2d907c2
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 106 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ class BoardDetailView:UIViewController, ViewProtocol, BoardDataDelegate{
}

override func viewWillAppear(_ animated: Bool) {
//self.hideBackBtnTitle()

}

override func viewDidLoad() {
Expand Down
123 changes: 41 additions & 82 deletions KNU_CSE/KNU_CSE/Main Tab/Board/BoardSearch/BoardSearchView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,75 +9,46 @@ import UIKit

class BoardSearchView:UIViewController, ViewProtocol{

var scrollView:UIScrollView!{
var searchController:UISearchController!{
didSet{
scrollView.alwaysBounceVertical = true
}
}

var textFieldHeight:CGFloat!
var titleField:UITextField!{
didSet{
if let font = titleField.font {
self.textFieldHeight = font.lineHeight + 16
}

let view = UIView(frame: CGRect(x: 0, y: 0, width: self.textFieldHeight, height: self.textFieldHeight))
let imageView = UIImageView()
let image = UIImage(systemName: "magnifyingglass")?.resized(toWidth: self.textFieldHeight*0.6)
self.searchController.isActive = true
self.searchController.obscuresBackgroundDuringPresentation = false
self.searchController.hidesNavigationBarDuringPresentation = false

titleField.placeholder = "검색어를 입력하세요."
titleField.delegate = self
titleField.addTarget(self, action: #selector(removeKeyBoardAction), for: .editingDidEnd)
titleField.font = UIFont.systemFont(ofSize: 15, weight: .regular)
titleField.backgroundColor = .white.withAlphaComponent(0.4)
titleField.layer.cornerRadius = 10
titleField.textColor = .white
let searchBar = searchController.searchBar
searchBar.delegate = self
searchBar.placeholder = "검색어를 입력하세요"
searchBar.tintColor = .white
searchBar.setValue("취소", forKey: "cancelButtonText")

imageView.frame = CGRect(x: self.textFieldHeight*0.2, y: self.textFieldHeight*0.2, width: self.textFieldHeight*0.6, height: self.textFieldHeight*0.6)

imageView.image = image?.withTintColor(.white)
view.addSubview(imageView)

titleField.enablesReturnKeyAutomatically = true // textfield에 text가 있을 때 return key 활성화

titleField.leftView = view
titleField.leftViewMode = .always
titleField.returnKeyType = .search
self.navigationItem.titleView = titleField
}
}

var contentCheck:Bool = false
var rightItemButton:UIBarButtonItem!{
didSet{
rightItemButton.title = "취소"
rightItemButton.style = .plain
rightItemButton.tintColor = .white
rightItemButton.target = self
rightItemButton.action = #selector(removeBoardView)
self.navigationItem.rightBarButtonItem = rightItemButton
let textField = searchBar.searchTextField
textField.backgroundColor = .white
navigationItem.setHidesBackButton(true, animated: false)
navigationItem.titleView = searchBar
}
}

var BoardVC : FreeBoardView!

override func viewWillAppear(_ animated: Bool) {
self.hideBackBtnTitle()
self.setNavigationTitle(title: "")
self.navigationItem.title = "게시물 검색"

}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
}

override func viewDidLoad() {
super.viewDidLoad()
self.initUI()
self.addView()
self.setUpConstraints()
self.setKeyBoardAction()
}

func initUI() {
self.scrollView = UIScrollView()
self.titleField = UITextField()
self.rightItemButton = UIBarButtonItem()
self.searchController = UISearchController(searchResultsController: nil)
self.BoardVC = storyboard?.instantiateViewController(withIdentifier: "FreeBoardView") as? FreeBoardView
}

Expand All @@ -86,15 +57,12 @@ class BoardSearchView:UIViewController, ViewProtocol{
}

func setUpConstraints() {
self.titleField.snp.makeConstraints{ make in
make.width.equalTo(250)
make.height.equalTo(textFieldHeight)
}

}
}

extension BoardSearchView{

func addBoardView(){
self.addChild(BoardVC)
self.view.addSubview(BoardVC.view)
Expand All @@ -108,41 +76,32 @@ extension BoardSearchView{
}
}

@objc func removeBoardView(){
BoardVC.willMove(toParent: nil)
BoardVC.view.removeFromSuperview()
BoardVC.removeFromParent()
titleField.resignFirstResponder()
}

@objc func removeKeyBoardAction(){
NotificationCenter.default.removeObserver(self)
//if press cancel button then pop
@objc func popViewController(){
self.navigationController?.popViewController(animated: true)
}

func hideBackBtnTitle(){
let backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backBarButtonItem
func setKeyBoardAction(){
NotificationCenter.default.addObserver(self, selector: #selector(removeBoardView), name: UIResponder.keyboardWillShowNotification, object: nil)
}

func setNavigationTitle(title:String){
self.navigationItem.title = title
//if keyboard show up then remove BoardVC
@objc func removeBoardView(){
BoardVC.willMove(toParent: nil)
BoardVC.view.removeFromSuperview()
BoardVC.removeFromParent()

}

}

extension BoardSearchView:UITextFieldDelegate{
//if return key press then keyboard shut down
public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField.returnKeyType == .search{
textField.resignFirstResponder()
self.addBoardView()
}
return true
extension BoardSearchView:UISearchBarDelegate{
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
self.addBoardView()
}

func addSearchButtonOnKeyBoard(){
let searchBtn:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
searchBtn.barStyle = .default
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
self.popViewController()
}
}



Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ class BoardWriteView:UIViewController, ViewProtocol{
didSet{
titleField.placeholder = "제목을 입력하세요."
titleField.delegate = self
titleField.addTarget(self, action: #selector(removeKeyBoardAction), for: .editingDidEnd)
titleField.font = UIFont.systemFont(ofSize: 15, weight: .regular)
titleField.addTarget(self, action: #selector(setRightItemColor), for: .editingChanged)
if let font = titleField.font {
Expand Down Expand Up @@ -140,10 +139,6 @@ class BoardWriteView:UIViewController, ViewProtocol{
}

extension BoardWriteView{
@objc func removeKeyBoardAction(){
NotificationCenter.default.removeObserver(self)
}

func setKeyBoardAction(){
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil);

Expand Down
4 changes: 0 additions & 4 deletions KNU_CSE/KNU_CSE/Main Tab/Board/FreeBoard/FreeBoardView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@ class FreeBoardView : UIViewController{
}
}

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "자유게시판"
}

override func viewDidLoad() {
super.viewDidLoad()
self.initUI()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ class ClassRoomView : UIViewController{
}
}

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "강의실 예약"
}

override func viewDidLoad() {
initUI()
addView()
Expand Down
4 changes: 0 additions & 4 deletions KNU_CSE/KNU_CSE/Main Tab/KNU Notice /NoticeView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ class NoticeView : UIViewController, WKUIDelegate{
}
}

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "공지사항"
}

override func viewDidLoad() {
super.viewDidLoad()
initUI()
Expand Down
4 changes: 0 additions & 4 deletions KNU_CSE/KNU_CSE/Main Tab/MyPage/MyPageView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ class MyPageView : UIViewController{
}
}

override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "마이페이지"
}

override func viewDidLoad() {
initUI()
addView()
Expand Down
13 changes: 11 additions & 2 deletions KNU_CSE/KNU_CSE/Main Tab/TabView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,20 @@ extension TabView:UITabBarControllerDelegate{

func tabChangedTo(selectedIndex: Int) {
switch selectedIndex {
case 0:
self.navigationItem.title = "공지사항"
self.navigationItem.rightBarButtonItems = nil
case 1:
self.navigationItem.title = "강의실 예약"
self.navigationItem.rightBarButtonItems = nil
case 2:
//self.setNavigationItemWithSearchWrite()
self.navigationItem.title = "자유게시판"
break
default:
case 3:
self.navigationItem.title = "마이페이지"
self.navigationItem.rightBarButtonItems = nil
default:

break
}
}
Expand Down

0 comments on commit 2d907c2

Please sign in to comment.