Ios 如何通过按自定义视图中的按钮从superview中删除自定义视图?
每当在我的iOS应用程序中点击视图控制器表视图的单元格时,我想显示我自己的自定义视图。当用户点击自定义视图中的按钮时,我还必须关闭自定义视图 然而,当用户点击单元格时,我可以显示自定义视图,但我不能通过点击自定义视图内的按钮来关闭自定义视图-它被错误崩溃:Ios 如何通过按自定义视图中的按钮从superview中删除自定义视图?,ios,uiview,swift,xib,Ios,Uiview,Swift,Xib,每当在我的iOS应用程序中点击视图控制器表视图的单元格时,我想显示我自己的自定义视图。当用户点击自定义视图中的按钮时,我还必须关闭自定义视图 然而,当用户点击单元格时,我可以显示自定义视图,但我不能通过点击自定义视图内的按钮来关闭自定义视图-它被错误崩溃:发送到实例的未识别选择器… 因此,我想知道什么是将按钮放在自定义视图中并将@IBAction连接到它以取消它的正确方法。以下是我所做的: 在自定义视图的.xib及其.swift文件之间添加@IBAction连接,并从方法内调用self.remo
发送到实例的未识别选择器…
因此,我想知道什么是将按钮放在自定义视图中并将@IBAction
连接到它以取消它的正确方法。以下是我所做的:
.xib
及其.swift
文件之间添加@IBAction
连接,并从方法内调用self.removeFromSuperview()
——这会导致应用程序崩溃,并显示上面的错误消息@IBAction
连接添加到调用以显示自定义视图(即具有UITableView
的视图控制器)-这无法完成,因为当我尝试创建连接时,Xcode不会对控件拖动行为作出反应.swift
文件或原始VC的.swift
文件中)
更新
当我将一个@IBOutlet
连接从自定义视图的xib上的按钮添加到自定义视图的.swift
文件中,并尝试从视图控制器内(println(customView.dismissButton)
)执行println()
时,然后,它也由于以下错误而崩溃:此类不符合key dismissButton的键值编码。
。因此,我最好只添加手势控制器,并对窗口上的任何点击做出反应,以消除自定义视图。。。真恶心
更新2
@Caroline在comment部分的zip文件正是我想要做的,但我不想从代码中创建和实例化自定义视图,而是想在xib上创建UI,在xib上的组件和我的代码之间创建一个
@IBAction
连接,最后从代码中取消归档以供使用。您可以将自定义视图放在视图控制器中,并使用分段加载自定义视图
这意味着您可以在情节提要中(在其新视图控制器下)拥有自定义视图,并拥有从表视图单元格到新视图控制器的一个序列,以及从新视图控制器到原始视图控制器的一个展开序列
这是Objective-C教程,但可能有助于了解故事板的概念:
编辑:
根据视图实际执行的操作,为UITableViewCell详图显示视图的正常方法是将详图视图放在单独的视图控制器内,并通过segue链接
我真的不知道为什么你的应用程序会因为你的代码而崩溃——这真的取决于故事板是如何设置的。如果要用代码实现,可以这样做:
class ViewController: UIViewController {
var greenView = UIView(frame: CGRect(x:100,y:500,width:200,height:200))
var greenButton = UIButton(frame: CGRectMake(20, 20, 80, 40))
override func viewDidLoad() {
super.viewDidLoad()
greenView.backgroundColor = UIColor.greenColor()
greenView.addSubview(greenButton)
greenButton.setTitle("Close Me", forState: .Normal)
greenButton.addTarget(self, action: "hideGreenView", forControlEvents: .TouchUpInside)
}
func hideGreenView() {
self.greenView.removeFromSuperview()
}
@IBAction func greenview(sender: AnyObject) {
self.view.addSubview(greenView)
}
}
该代码假定您在故事板上有一个链接到greenview()的按钮,但其其余部分不在故事板上
当然,您也可以在故事板上创建视图,并将其作为隐藏视图,然后在函数中隐藏或取消隐藏。如果要将视图动画化,可以使用UIView动画
如果您的UIViewController是UITableViewController,您也可能会遇到问题。在UIViewController中可以有一个UITableView,UIViewController是委托和数据源,但对我来说这似乎是一个“难闻”的代码(当然,这取决于您实际试图实现的目标)。您可以将自定义视图放在视图控制器中,并使用分段加载自定义视图 这意味着您可以在情节提要中(在其新视图控制器下)拥有自定义视图,并拥有从表视图单元格到新视图控制器的一个序列,以及从新视图控制器到原始视图控制器的一个展开序列 这是Objective-C教程,但可能有助于了解故事板的概念: 编辑: 根据视图实际执行的操作,为UITableViewCell详图显示视图的正常方法是将详图视图放在单独的视图控制器内,并通过segue链接 我真的不知道为什么你的应用程序会因为你的代码而崩溃——这真的取决于故事板是如何设置的。如果要用代码实现,可以这样做:
class ViewController: UIViewController {
var greenView = UIView(frame: CGRect(x:100,y:500,width:200,height:200))
var greenButton = UIButton(frame: CGRectMake(20, 20, 80, 40))
override func viewDidLoad() {
super.viewDidLoad()
greenView.backgroundColor = UIColor.greenColor()
greenView.addSubview(greenButton)
greenButton.setTitle("Close Me", forState: .Normal)
greenButton.addTarget(self, action: "hideGreenView", forControlEvents: .TouchUpInside)
}
func hideGreenView() {
self.greenView.removeFromSuperview()
}
@IBAction func greenview(sender: AnyObject) {
self.view.addSubview(greenView)
}
}
该代码假定您在故事板上有一个链接到greenview()的按钮,但其其余部分不在故事板上
当然,您也可以在故事板上创建视图,并将其作为隐藏视图,然后在函数中隐藏或取消隐藏。如果要将视图动画化,可以使用UIView动画
如果您的UIViewController是UITableViewController,您也可能会遇到问题。在UIViewController中可以有一个UITableView,UIViewController是委托和数据源,但对我来说这似乎是一个“难闻”的代码(当然,这取决于您实际试图实现的目标)。您可以将自定义视图放在视图控制器中,并使用分段加载自定义视图 这意味着您可以在情节提要中(在其新视图控制器下)拥有自定义视图,并拥有从表视图单元格到新视图控制器的一个序列,以及从新视图控制器到原始视图控制器的一个展开序列 这是一个Objective-C教程,但他可能