所以我一直在四处寻找关于如何做到这一点的指南,我害怕我的空白!
所以基本上我想使用Swift为iOS创建一个简单的表情符号/图像/ gif键盘扩展。
对于我的主应用程序的一部分,我有一个viewController,它包含一个collectionView,带有collectionViewCell。使用plist中的信息,我生成一组图像(父组),当选择时,它会向下钻取到显示该组的所有图像的第二级。从此级别选择图像会将图像复制到剪贴板。
所以我把这个主要应用程序部分做得非常好,现在想模仿键盘的功能。
所以我做了一个键盘扩展,它创建了一个class KeyboardViewController: UIInputViewController
文件。
然后我创建了一个名为Keyboard.xib
的新视图文件。在视图中,我添加了UICollectionView
。
在KeyboardViewController
中,我然后致电
override func viewDidLoad() {
super.viewDidLoad()
let nib = UINib(nibName: "Keyboard", bundle: nil)
let objects = nib.instantiateWithOwner(self, options: nil)
view = objects[0] as! UIView
addKeyboardButtons()
}
当app运行时,在键盘视图中显示我的空collectionView。
我现在的挑战是使用可重复使用的单元格填充collectionView,该单元格将显示plist文件中名称的图像。
在我的主应用程序中,我能够确定collectionView中的项目数,它为我创建了一个单元格。
但是,在键盘视图中,我没有添加单元格的选项。将单元格拖动到collectionView也没有帮助。
所以我只是想知道,在Keyboard.xib
中将可重用单元格放入我的collectionView中的最佳方法是什么,然后我可以用图像填充它?
我从一篇较旧的帖子中读到,某个人创建了一个新的xib
文件,纯粹是他的单元格,其中包含imageView
,并使用该xib
单元格文件填充在collectionView
。
我已创建了额外的xib
文件,但不确定如何建立连接以将其作为可恢复单元格在collectionView中使用...
有什么想法或想法吗?
感谢!!!
答案 0 :(得分:2)
我通过为Keyboard.xib
创建一个新的类文件,并在那里创建和设置collectionView插座和委托来解决了这个问题。
class KeyboardView: UIView, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var collectionView: MyCollectionView!
class func instanceFromNib() -> KeyboardView {
return UINib(nibName: "Keyboard", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! KeyboardView
}
override func awakeFromNib() {
print("awaking from nib")
collectionView.delegate = self
collectionView.dataSource = self
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print("adding numberOfItemsForSection")
return 1
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
print("adding cell")
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath)
cell.backgroundColor = UIColor.greenColor()
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
print("setting size..")
return CGSizeMake(320, 350)
}
}
然后更新我的KeyboardViewController.swift
文件以实例化
override func viewDidLoad() {
super.viewDidLoad()
let keyboardView = KeyboardView.instanceFromNib()
keyboardView.collectionView.registerNib(UINib.init(nibName: "Cell", bundle: nil), forCellWithReuseIdentifier: "myCell")
self.view.addSubview(keyboardView)
addKeyboardButtons()
}
谢谢!