2017-01-07 1 views
-1

저는 iOS 개발에 새로운 경험이 있으며 귀하의 조언을 기다리고 있습니다.버튼을 사용하여 메서드 호출

하나의 프로젝트를 GitHub에서보고 있습니다.

몇 가지 기능을 추가하고 싶습니다. SideMenu를 표시하고 숨길 수있는 버튼을 추가하고 싶습니다.

sideMenu는 SideMenu 클래스의 인스턴스이며 ViewDidLoad 메서드에서 만들어집니다. 버튼의 액션 메소드를 사용하여 sideMenu.toggleMenu (true) 메소드를 호출하는 법.

class HomeViewController: UIViewController, SideMenuDelegate { 

    @IBAction func menuButtonTapped(_ sender: Any) { 

    sideMenu.toggleMenu(open: true) 

    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 

    let sideMenu = SideMenu(menuWidth: 200 , menuItemTitles: ["", "", "Profile", "Settings", "Restaurant"], parentViewController: vviewController) 

     sideMenu.menuDelegate = self 

} 

은 내 버튼 내가 viewDidLoad으로 액션 방법입니다 추가 할 수없는 이유는 스토리 보드를 사용하여 만들어집니다.

이론적으로 나는 ViewDidLoad에서 버튼을 프로그래밍 방식으로 만들 수있었습니다. 유일한 해결책입니까?

enter image description here

+0

이해가 안되며, 스토리 보드를 사용하고 계신가요? 프로그래밍 방식으로 원한다고 생각하는 것 같지만 버튼에 IBAction이있는 이유는 무엇입니까? –

+0

스토리 보드를 사용하는 경우. ctrl-dragging을 사용하여 @IBAction을 연결 했습니까? menuButton에서 빠른 인쇄 문을 클릭하십시오. 클릭했을 때 실행 여부를 확인합니다. – Emptyless

+0

sideMenu가 viewDidLoad에 대한 로컬 상수이고 IBAction에서 액세스 할 수 없으므로 코드가 현재 컴파일되지 않았습니까? –

답변

1

문제는 버튼이나 어디를 선언과는 불과하다.

sideMenuviewDidLoad의 상수이며 IBAction에 액세스 할 수 없습니다.

이 방법의 sideMenu 외부의 당신의 정의를 이동하고 선택하게

: 당신이 현재 IBAction에서

sideMenu = SideMenu(... 

을합니다 (하자를 제거)이기 때문에 viewDidLoad에서

var sideMenu:SideMenu? 

그것을 설정, 풀다 선택 사항 :

if let sideMenu = sideMenu { 
    // do what you need with sideMenu 
else { 
    // handle error sideMenu not initialised properly 
} 

대안에 대한 vacawama의 의견보기.

+1

포장을 풀 필요가 없습니다. 'sideMenu? .toggleMenu (open : true)','sideMenu? .menuDelegate = self', 등등. – vacawama

+0

@vacawama 좋은 점은, sideView는 그렇지 않다는 오류를 숨기 겠지만 장치를 적절히 설치하십시오. 답변을 수정할 것입니다. –

+1

물론, 그 오류는 일회성 프로그래밍 오류이며 반복적으로 처리해야하는 오류는 아닙니다. 실제로 'var sideMenu : SideMenu!'를 만드는 것이 실제로 가장 좋은 방법 일 수 있습니다. 그 이유는 설정을 잊었다는 것을 바로 알 수 있기 때문입니다. 이것이'@ IBOutlets'의 처리 방법입니다. – vacawama