从 NIB 子视图按钮执行视图序列

Posted

技术标签:

【中文标题】从 NIB 子视图按钮执行视图序列【英文标题】:Perform segue of view from NIB subview button 【发布时间】:2014-05-14 04:02:44 【问题描述】:

我有一个主视图(包含配置文件的表格视图),它有一个导航控制器。在导航栏中,我有一个“菜单”栏按钮。当用户单击栏按钮时,菜单视图将作为子视图添加到主视图。这个菜单视图(它是一个子视图)有一个按钮。此按钮将用于连接到故事板中的另一个视图(不是子视图)。

我的菜单视图的 .m 文件中的这段代码不起作用:

- (IBAction)button:(UIButton *)sender 
    [AlertStatus alertStatus:@"" :@"Message1" :0];
    [sender performSegueWithIdentifier:@"segueTo1" sender:sender];

我得到一个 “'UIButton' 没有可见的@interface 声明选择器 performSegueWithIdentifier:sender:'” 错误信息

有人可以帮忙吗?我也听说过在主视图中使用委托,但我没有这方面的经验。

【问题讨论】:

【参考方案1】:

这很容易解决。 您必须从视图控制器执行 segue,而不是按钮。

- (IBAction)button:(UIButton *)sender 
    [AlertStatus alertStatus:@"" :@"Message1" :0];
    [self performSegueWithIdentifier:@"segueTo1" sender:sender];

此代码将起作用

【讨论】:

我尝试了你所说的。但它仍然不起作用。此代码是放在 NIB .m 文件还是 ViewController .m 文件中?我将编辑顶部以更好地解释。 你必须把它放在 ViewControllers .m 文件中。你应该让你的 ViewController 成为你的按钮的代表,而不是使用 [self performSegueWithIdentifier:@"segueTo1" sender:sender]; 从 ViewController 执行 segue 请记住:只有视图控制器可以执行 segue,而不是视图 感谢您的信息。我将研究代表的按钮点击情况。如果你愿意,一个例子会很棒,对我自己和其他人都有帮助:)【参考方案2】:

我不知道如何使用 segue,但您也可以使用以下代码。如果不需要使用 segue,则可以使用此代码。

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
OtherViewController *mvc = [sb instantiateViewControllerWithIdentifier:@"OtherViewController"];        
[self.navigationController pushViewController:mvc animated:YES];

【讨论】:

以上是关于从 NIB 子视图按钮执行视图序列的主要内容,如果未能解决你的问题,请参考以下文章

IOS:如何使从 nib 文件加载的子视图可以使用它的按钮(IBAction)

加载时 NIB 视图没有子视图

如何使 xib 子视图与 Swift 中的超级视图交互?

Cocoa - 从 nib 加载视图并将其显示在 NSView 容器中,作为子视图

如何显示从单独的 NIB 文件加载的子视图

UITableView 作为 NIB 中的子视图的问题