我有一个UIToolbarButton,它有一个UIButton来保存图像。现在,当我点击这个UIToolbarButton时,我想在当前视图中打开另一个视图。
我的代码:
- (IBAction)btnNowPlaying:(id)sender
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(openPlaying:)];
[self.view addGestureRecognizer:tap];
}
- (void)openPlaying:(UIGestureRecognizer *)sender
{
NewMainViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"Center"];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController * npvc = [storyboard instantiateViewControllerWithIdentifier:@"NowPlayingVC"];
[vc.containerView addSubview:npvc.view];
}
此操作,btnNowPlaying位于UIButton上。
答案 0 :(得分:1)
听起来您只想从一个视图控制器导航到另一个视图控制器。只需控制 - 从条形按钮项拖动到您想要导航到故事板中的视图控制器。然后,单击两个视图控制器之间的segue,并在“属性”检查器中设置其标识符。之后,您需要做的就是实施prepareForSegue:
:
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"THE_IDENTIFIER_YOU_ENTERED_IN_THE_ATTRIBUTES_INSPECTOR"]) {
if ([segue.destinationViewController isKindOfClass:[NEWViewController class]]) {
NEWViewController *vc = (NEWViewController *)segue.destinationViewController;
// Any preparation you need to do for next view controller
vc.someProperty = someValue;
}
}
}
在当前视图控制器中打开一个新的视图控制器有点奇怪。为什么不直截了当呢?
另一个选择是alloc-init一个UIView而不是一个视图控制器而只是addSubview:
。
答案 1 :(得分:0)
首先,您可以使用带有UIBarButton
样式和setter Image属性的默认Custom
项,而不是创建UIButton
。
您无需创建其他手势识别器。如果您在Interface Builder中将IBAction与按钮连接,则可以将转换代码放在btnNowPlaying方法中。
另一种方法是创建IBOutlet,将其与按钮连接,并在- (void)viewDidLoad
方法中创建UIGestureRecognizer。