swift中的自定义视图操作

时间:2017-10-16 04:35:22

标签: ios swift uiviewcontroller

我创建了一个自定义View,因为不同的UIViewController具有相同的外观。

当我将自定义View添加到UIViewController时,它似乎是一片空白。那没关系。重要的是如何为action上的隐形Button叠加层创建ImageView?我似乎无法将隐身Sent Action的{​​{1}}与Button联系起来。

非常感谢任何帮助!

编辑: @Mannopson这就是我的做法

UIViewController

4 个答案:

答案 0 :(得分:2)

无法连接插座的可能原因是:

  • ViewController(在InterfaceBuilder中)没有附加到它的ViewController类,即Identity Inspector中没有指定自定义类
  • 错误的动作/插座对,即尝试将按钮动作连接到视图

答案 1 :(得分:2)

实质上,将行动分配给UIImageView是一种不好的做法。您不必使用图像视图来处理点击(尽管技术上可以)。相反,使用简单的UIButton,删除其文本,边框及其颜色,并简单地设置图像。你会得到你想要的,没有不必要的叠加和这样的东西。它更容易,也更合适。

修改(摘自显示其他问题的评论):

将自定义视图添加到视图层次结构中。最典型的方式:

创建UIViewController的子类,该类拥有所有出口。然后创建一个单独的故事板文件(或者您甚至可以使用当前的)。然后简单地以编程方式对其进行实例化,并通过这样做,访问view属性。将view作为子视图添加到当前显示的UIViewController的视图层次结构中。

其他解决方案包括:

1)使用容器视图来管理嵌套的UIViewController

2)为您的自定义视图使用单独的XIB文件,并以编程方式对其进行实例化。

答案 2 :(得分:2)

尝试这样的事情:

class BookDetailsView: UIView {

@IBOutlet var wholeView: UIView!
@IBOutlet var borderView: UIView!
@IBOutlet weak var imgBook: UIImageView!
@IBOutlet weak var txtTitle: UITextField!
@IBOutlet weak var txtAuthor: UITextField!
@IBOutlet weak var txtDesc: UITextField!
@IBOutlet weak var btnUploadPhoto: UIButton!

}

使用UIViewController viewDidLoad方法加载自定义视图:

let customView = Bundle.main.loadNibNamed("YourXIBName", owner: self, options: nil).first as! YourUIViewSubclass

// Customize appearence
customView.btnUploadPhoto.backgroundColor = UIColor.red

// Add an action for this button
customView.btnUploadPhoto.addTarget(self, action: #selector(yourFunctionForUIButton), forControlEvents: .touchUpInside)

self.view.addSubview(customView)

自定义功能:

func yourFunctionForUIButton() { 
}

希望它有所帮助。这不是您主要问题的答案,也不仅仅是建议

答案 3 :(得分:1)

您应该为ImageView添加手势。

letter