首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将IBOutlet连接到XIB文件

无法将IBOutlet连接到XIB文件
EN

Stack Overflow用户
提问于 2017-08-11 11:21:25
回答 2查看 3K关注 0票数 2

我正在尝试实施Koloda刷卡方式。我已经创建了一个.xib文件,结构为图像1& 2。

正如您在图1中所看到的,我已经将文件所有者设置为XIB文件自定义类。

在图2中,我将类保留为空白(不确定这是否正确)。

我的NIB类如下代码所示。

代码语言:javascript
复制
import UIKit
import Koloda

class CardView: KolodaView {

var view: UIView!
var nibName: String = "CardView"
var uid: String!

@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var nameLabel: UILabel!

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setUp()
}

override init(frame: CGRect) {
    super.init(frame: frame)
    setUp()
}

func setUp() {

    view = loadViewFromNib()

    view.frame = bounds
    view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    view.isUserInteractionEnabled = true
    addSubview(view)

}

func loadViewFromNib() -> UIView {
    let bundle = Bundle(for: CardView.self)
    let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView

    return view
}
}

在我的控制器中,我有如下所示的索引视图;

代码语言:javascript
复制
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {

    _ = userResults[Int(index)]

    let bundle = Bundle(for: CardView.self)
    let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView

    return view
}

我无法插入我的IBOutlets并在我的UIViewController中引用它们。因为我将获得geoFire & FirDatabase信息并填充视图。我知道这和文件的所有者有关。我只是不确定如何将IBOutlets设置为子视图而不是自定义类。

任何帮助都很感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-12 15:19:36

终于经过了几个小时的修补。

  1. 现在是班级; 导入UIKit类CardView: UIView { var uid: String!@IBOutlet弱var profileImage: UIImageView!@IBOutlet弱var nameLabel: UILabel!}
  2. 移除文件所有者
  3. xib中的CardView现在设置为CardView。
  4. viewForCardAt现在是; func (_ koloda: KolodaView,viewForCardAt索引: Int) -> UIView { let bundle = Bundle(for: CardView.self) let nib = UINib(nibName: String(描述: CardView.self),bundle: bundle) let view = nib.instantiate(withOwner: self,options: 0) as!CardView让用户=userResultsInt(索引)view.profileImage.sd_setImage(带有: URL(string: users.userProfileURL)) view.nameLabel.text = users.userName view.uid = users.uid返回视图 }

我现在有一个工作的“带有geoLocating的Tinder”:)

票数 3
EN

Stack Overflow用户

发布于 2017-08-11 11:26:17

尝试将CardView类设置为自定义类CardView而不是UIView

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45633991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档