2013-09-26 70 views
0

任何人都可以幫助我理解下面的函數有什麼問題嗎?通過按鈕調用某個功能

我對本機IOS dev相當陌生。

我想用本教程(http://www.appcoda.com/ios-programming-sidebar-navigation-menu/)在我們的應用程序中實現側面板。
所有這一切工作正常,足夠簡單 - 但我想通過觸發一個標準的按鈕,而不是在頭一個動態按鈕的顯示功能 - 以滿足我們的設計..

原始代碼如下 -

#import "SWRevealViewController.h" 


// Change button color 
_sidebarButton.tintColor = [UIColor colorWithWhite:0.96f alpha:0.2f]; 

// Set the side bar button action. When it's tapped, it'll show up the sidebar. 
_sidebarButton.target = self.revealViewController; 
_sidebarButton.action = @selector(revealToggle:); 

// Set the gesture 
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 

複製一個按鈕觸發的功能,添加以下的.h文件中 -

@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton; 

@property (weak, nonatomic) IBOutlet UIButton *revealLeftBtn; 
- (IBAction)btnClickRevealL:(id)sender; 

,並在我的.m文件以下

- (IBAction)btnClickRevealL:(id)sender { 


[self.revealViewController]; 
[@selector(revealToggle:)]; 

} 

我得到錯誤'懷疑標識符'的上述行 - 我不明白如何使用上述方法觸發的功能,而不是以上 - 任何人都可以幫助? 乾杯

以供參考,這是整個.m文件 -

#import "MainViewController.h" 
#import "SWRevealViewController.h" 


@interface MainViewController() 

@end 

@implementation MainViewController 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

self.title = @""; 

// Change button color 
_sidebarButton.tintColor = [UIColor colorWithWhite:0.96f alpha:0.2f]; 

[self.navigationController.navigationBar setTranslucent:TRUE]; 

// Set the side bar button action. When it's tapped, it'll show up the sidebar. 






// Set the gesture 
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 




} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (IBAction)btnClickRevealL:(id)sender { 


[self.revealViewController]; 
[@selector(revealToggle:)]; 

} 
@end 

回答

8

這條線:

(IBAction)btnClickRevealL:(id)sender { 


[self.revealViewController]; 
[@selector(revealToggle:)]; 

} 

不執行任何操作。

我想這是你想要做什麼:

[self.revealViewController revealToggle:sender]; 

當您設置target和一個按鈕action,您可以設置哪個類是做動作(target),並叫什麼方法( action)。

這是做[target action]

+1

點相當於 - 感謝您的幫助@Antonio MG – Dancer

0
- (IBAction)logInBtnClicked:(id)sender { 
    //Remove WhiteSpace from start of uitextfield 
    self.emailIdTxtFldRef.text = [self.emailIdTxtFldRef.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 
    self.passwordTxtFldRef.text = [self.passwordTxtFldRef.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 
    if ([self.emailIdTxtFldRef.text isEqualToString:@""]||[self.passwordTxtFldRef.text isEqualToString:@""]) { 
     [self showMessage:@"All fields are mandatory" withTitle:@"Error"]; 
    }else{ 
     SWRevealViewController *revealVC = [self.storyboard instantiateViewControllerWithIdentifier:@"swRevealViewContoller"]; 
     revealVC.delegate=self; 
     [[UIApplication sharedApplication]keyWindow].rootViewController = revealVC; 
    } 
} 
+1

請解釋一下你的代碼,爲什麼它的工作原理或處理問題。 – CaptJak

+0

雖然這段代碼可能解決這個問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code- based-answers)確實有助於提高您的質量帖子。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – NathanOliver

相關問題