-
UIBarButtonItem을 만들어보자앱등이에게 살충제를 뿌린다./일기는 일기장에 2016. 8. 6. 20:19
<사진 출처 : 구글검색 uitoolbar>
UIBarButtonItem은 UIToolbar, UINavigationBar 등의 메뉴에 사용된다. 사용은 아래와 같다.
(결과참조:http://rhammer.tistory.com/173)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersimport UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() navigationController?.toolbarHidden = false toolbarItems = makeToolbarItems() } private func makeToolbarItems() -> [UIBarButtonItem] { let space = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: nil) let edgeSpace = UIBarButtonItem(barButtonSystemItem: .FixedSpace, target: self, action: nil) let buttonItem1 = UIBarButtonItem(barButtonSystemItem: .Action, target: nil, action: nil) let buttonItem2 = UIBarButtonItem(barButtonSystemItem: .Bookmarks, target: nil, action: nil) let buttonItem3 = UIBarButtonItem(barButtonSystemItem: .Camera, target: nil, action: nil) let buttonItem4 = UIBarButtonItem(barButtonSystemItem: .Search, target: nil, action: nil) let buttonItem5 = UIBarButtonItem(barButtonSystemItem: .Refresh, target: nil, action: nil) return [edgeSpace, buttonItem1, space, buttonItem2, space, buttonItem3, space, buttonItem4, space, buttonItem5, edgeSpace] } } 여기에 포스팅할 내용은 이 UIBarButtonItem을 만드는 방법에 관한 것이다.
1. 시스템에서 제공하는 item
위 예제를 참조하세요!
2. 이미지만 갖고 만드는 item
3. 타이틀만 갖고 만드는 item
4. 커스텀 UIView를 갖고 만드는 item
사실 이 4번이 핵심이다. 1,2,3 번은 쉬운데 4번은 생각보다 까다롭다. 4번은 아래의 메소드를 사용해야 한다.
Declaration
SWIFT
convenience init(customView
customView
: UIView)OBJECTIVE-C
- (instancetype)initWithCustomView:(UIView *)
customView
이 메소드만 보고는 이런 코드를 떠올리기가 쉽다.
이 소스의 경우에 탭을 터치해도 onTouchedTab이 호출되지 않는다. customView로 barButtonItem을 생성하면 아무래도 target/action을 지정할 수 없는듯 했다.
그래서 UIView가 아닌 UIButton으로 customView를 생성하여 이 문제를 해결할 수 있다.
이 때 onTouchedTab메소드의 parameter로 들어오는 sender의 타입을 UIBarButtonItem이 아닌 UIButton이라는 점을 아는 것이 좋다.
아무래도 다른 방법이 있을 것 같으므로, 아는 분은 알려주시면 감사하겠습니다.
'앱등이에게 살충제를 뿌린다. > 일기는 일기장에' 카테고리의 다른 글
iOS10에서의 ATS.. 너무 힘들지만 TLS version을 건들여 보자.. (1) 2016.09.29 UIViewController의 toolbarItems가 셋팅이 안된다. (0) 2016.08.13 view를 위해 viewController를 만든다? (0) 2016.07.21 [아몰랑] 컴파일타임 메소드와 런타임 메소드 (0) 2016.07.19 UIBarButtonItem의 initWIthCustomView에 addTarget:action:이 안먹힌다? (1) 2016.07.07