从 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 推送视图控制器的主要内容,如果未能解决你的问题,请参考以下文章