从 IBAction 推送视图控制器

Posted

技术标签:

【中文标题】从 IBAction 推送视图控制器【英文标题】:Push View Controller from IBAction 【发布时间】:2012-10-09 07:59:53 【问题描述】:

在 NavigationController 中,我有一个 TabBarController。我有一个 TabBarController 的 NavigationItem 的自定义类,它是 UINavigationItem 的子类。我的 NavigationItem 有一个 TabBarButtonItem,其中包含一个 UIButton。我已经为这个按钮定义了一个动作。我的问题是如何通过此操作以编程方式推动其他视图?我怎样才能在这个类中获得导航控制器?或者是否存在其他方式?

在.h中:

@interface CustomNavigationItem : UINavigationItem

    IBOutlet UIBarButtonItem *barbtnApply;
    IBOutlet UIButton *btnApply;

@property(nonatomic,retain) UIBarButtonItem *barbtnApply;
@property(nonatomic,retain) UIButton *btnApply;
-(IBAction)actionApply:(id)sender;

@end

在.m:

@implementation CustomNavigationItem

@synthesize btnApply = _btnApply;
@synthesize barbtnApply = _barbtnApply;

-(IBAction)actionApply:(id)sender

    btnApply = sender;
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    //push to other view

@end

【问题讨论】:

【参考方案1】:

也许你应该声明一个委托并在按钮方法上调用它。

在您的 CustomNavigationItem.h 中

@protocol CustomNavigationItemDelegate <NSObject>

-(void)shouldPushViewController;

@end

@interface CustomNavigationItem : UINavigationItem
      id<CustomNavigationItemDelegate> delegate;


@property (nonatomic, assign) id<CustomNavigationItemDelegate> delegate;

在您的 CustomNavigationItem.m 中

@implementation CustomNavigationItem

@synthesize btnApply = _btnApply;
@synthesize barbtnApply = _barbtnApply;
@synthesize delegate;

 -(IBAction)actionApply:(id)sender
 
     btnApply = sender;
     [self.delegate shouldPushViewController];

@end

在你的 viewcontroller.m 中

设置委托

在.h中

@interface MyViewController:UIViewController <CustomNavigationItemDelegate>

在.m

 mynavigationItem.delegate = self;

并实现方法

-(void)shouldPushViewController
    [self.navigationController pushViewController:viewControllerToPass animated:YES];

【讨论】:

感谢您提供此代码。问题是我没有视图控制器,我有一个标签栏控制器,它有这个导航项......这是我故事板的截图:postimage.org/image/sv6elwmcz 然后实现你想要推送另一个视图控制器的委托,这只是一个例子

以上是关于从 IBAction 推送视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

条形按钮项目能否同时连接到 IBAction 和 StoryBoard 到模态视图控制器?

推送视图控制器不起作用

推送视图控制器不起作用

使用 ios5 和情节提要推送带有参数的视图控制器

无法从 xib 将 IBAction 连接到表视图

为啥我不能从情节提要创建 IBAction