故事板应用程序中的 Uibutton touchupinside 动作中断程序

Posted

技术标签:

【中文标题】故事板应用程序中的 Uibutton touchupinside 动作中断程序【英文标题】:Uibutton touchupinside action breaks program in storyboard app 【发布时间】:2013-08-23 13:29:32 【问题描述】:

我正在尝试创建一个自定义 Picker 视图,将 touchupinside 事件作为函数连接到我的 PickerViewViewController.h 类

- (IBAction)Done:(id)sender;

在.m中添加了函数

- (IBAction)Done:(id)sender 

 NSLog(@"Done");

将视图添加到我的主视图中

 PickerViewViewController *pic=[self.storyboard instantiateViewControllerWithIdentifier:@"Pickerview"];
[self.view addSubview:pic.view];

但是当我点击完成按钮时它崩溃了,我在使用 XIB 之前已经完成了它,帮助?

【问题讨论】:

您不应该将另一个视图控制器的视图添加到您的视图中,而不使该控制器成为子视图控制器。但问题是,为什么要从另一个控制器添加选择器,而不仅仅是将选择器视图添加到主控制器的视图中? 【参考方案1】:

首先尝试将您的函数重命名为

- (IBAction)doneButtonPressed:(id)sender

Done 可能会被系统保留用于某些事情(不确定,但它以前发生在我身上)

您可以只删除情节提要...并使用 .xib 制作一个普通的 ViewController :)。实际上不需要 ViewController。只需将 UIView 和 .xib 链接到您的 UIView。

要将 .xib 附加到 UIView,您可以使用:

+ (CustomViewName *)getNewCustomView 
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"CustomViewName" owner:nil options:nil];
for (NSObject *obj in xib) 
    if ([obj isKindOfClass:[CustomViewName class]]) 
        return (CustomViewName *)obj;
    

return nil;

并像这样初始化它:

CustomViewName *customView = [CustomViewName getNewCustomView];
customView.frame = CGRectMake(...);
self.view addSubview:customView;

同样在您的 .xib 文件中,您必须设置您的类的名称...但在 VIew 上不是像这样在文件的所有者上:

【讨论】:

尝试了新名称但仍然相同,当我为表格视图分类单元格时,我遇到了类似的问题,当我尝试将单元格中的按钮连接到它的类函数时它崩溃了。我认为这是因为故事板不知道如何避免这个错误 你可以放下情节提要......然后用 .xib 制作一个普通的 ViewController :) cant drop storyboard in the current project in this stage可能在下一个项目中。

以上是关于故事板应用程序中的 Uibutton touchupinside 动作中断程序的主要内容,如果未能解决你的问题,请参考以下文章

无法在 UIButton 故事板上添加操作

构建故事板后调整 UIButton

来自故事板的自定义 UIButton

UIButton 不在故事板上的同一个地方

故事板中的 UITableView

UIButton tint color 不适用于整个按钮?在故事板中设置?