0

任何人都可以帮助我了解我在下面的功能出了什么问题吗?

我对本地 IOS 开发人员相当陌生。

我想使用本教程(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
4

2 回答 2

8

这一行:

 (IBAction)btnClickRevealL:(id)sender {


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

}

什么也没做。

我想这就是你想要做的:

[self.revealViewController revealToggle:sender];

当您设置按钮的targetaction时,您设置了哪个类正在执行操作 ( target) 以及调用什么方法 ( action)。

这相当于做[target action]

于 2013-09-26T15:00:17.227 回答
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;
    }
}
于 2015-12-08T09:03:43.037 回答