2016-08-01 7 views
0

UINavigationItem (rightBarButtonItem)에 대한 꽤 표준적인 선택 버튼을 구현하고 있습니다. 내가가는 방법은 viewDidLoad 함수에서 인스턴스화하는 것입니다. 선택기를 액션으로 전달한 다음 해당 selector 함수를 viewDidLoad 함수 외부에 씁니다.UIBarButtonItem을 셀렉터로 참조하기 함수

명백한 문제는 탐색 선택 버튼이 더 이상 선택기 기능의 범위에 있지 않기 때문에 참조 할 수없고 작업 할 수 없다는 것입니다.

선택 탐색 버튼을 구현하는 방법은 여러 가지가 있어야합니다. 콜렉션 뷰에서 스위치처럼 작동하기를 원합니다. 그래서 선택 버튼이 눌려 졌을 때만 콜렉션 뷰 셀을 선택하고 하이라이트 할 수 있습니다. 이를 위해 셀렉터 조치로 스위치처럼 myButton.selected 부울 값을 켜고 끕니다 (여기서는 UISwitch가 필요하지 않다고 생각합니다).

설명은 다음과 같습니다. 당신이 collectionViewCells의 상태를 전환하는 내비게이션 바 barButtonItem을 만드는 멋진 방법이있는 경우

class GalleryViewController: UIViewController { 

@IBOutlet var collectionView: UICollectionView! 
.... 

override func viewDidLoad() { 
    super.viewDidLoad() 
    ... 

    //MARK: Select button 
    let mySelector: Selector = #selector(GalleryViewController.selectSelector) 
    let selectButton: UIBarButtonItem = UIBarButtonItem(title: "Select", style: UIBarButtonItemStyle.Plain, target: self, action: mySelector) 

    self.navigationItem.rightBarButtonItem = selectButton 

} 

//MARK: Select Button Function 
func selectSelector() { 
    //Toggle selectButton ON/OFF here, and more 

} 

것은, 나는 그것을 듣고 싶어요! 그냥 완전한 대답을 제공, 내가 전혀 (Xcode에서 faceroll 같은 느낌) 아직도 많이 생각하지 마십시오.

답변

1

당신은 몇 가지 옵션이 있습니다; 로컬 변수가 아닌 속성에 UIBarButtonItem에 대한 참조를 저장할 수 있으므로 액션 핸들러 함수에서 사용할 수 있거나 self.navigationItem.rightBarButtonItem에서 참조를 얻을 수 있지만 가장 간단한 방법은 그 사실을 활용하는 것입니다. UIBarButtonItem은 액션 핸들러 함수로 전달됩니다 :

func selectSelector(sender: UIBarButtonItem) { 
    //Toggle selectButton ON/OFF here, and more 
} 
+0

송신자/수신자의 완벽한 사용, 감사합니다! – Typhon