Справочная информация:
Я пытаюсь создать пользовательский интерфейс Tinder-esque, который загружает профили пользователей в стопку карточек с помощью библиотеки Koloda - библиотеки считывания карточек Tinder, основанной на UITableView
. В делегатской функции Koloda viewForCardAt()
, где я должен возвращать представление для вставки в карточки, я создал, заполнил и возвратил специальный файл xib, представляющий карточки профиля.
Проблема:
После того, как программная копия моего пользовательского xib была возвращена в представление функции viewAtCard моего Koloda, и я запустил приложение, я получил следующий код ошибки из Thread 1
в первой строке моего файла AppDelegate:
...NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X
Примечание: нет ошибки, если я просто создаю экземпляр UIImageView и просто возвращаю его, так что очевидно, что что-то не так с тем, как я делаю свой xib ...
Код:
Контроллер My View:
import UIKit
import Koloda
import Firebase
class HomeScreenViewController: UIViewController, KolodaViewDelegate, KolodaViewDataSource {
//map: each card to data from userCards
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
//render a ProfileCard given this profile's info:
let view = Bundle.main.loadNibNamed("ProfileCard", owner: self, options: nil)?.first as! ProfileCard
view.profileLabel.text = "personsName"
return view
}
}
Файл xib My ProfileCard: Очень простой c xib-файл, содержащий UIImageView и UILabel сверху. Размер установлен в произвольной форме, атрибут FileOwner установлен в ProfileCard
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ProfileCard" customModule="MojoJojo" customModuleProvider="target">
<connections>
<outlet property="container" destination="iN0-l3-epB" id="NW0-eP-701"/>
<outlet property="image" destination="AGi-0q-6ds" id="12w-8B-gwl"/>
<outlet property="nameAge" destination="GDn-Uz-UhE" id="Wrc-ar-wbY"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="381" height="581"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AGi-0q-6ds">
<rect key="frame" x="0.0" y="0.0" width="381" height="582"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GDn-Uz-UhE">
<rect key="frame" x="22" y="480" width="181" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
<point key="canvasLocation" x="-51" y="504"/>
</view>
</objects>
</document>
Мой файл ProfileCard Swift:
import UIKit
//the 'controller'
class ProfileCard: UIView {
//reference to image in the profile card
@IBOutlet weak var imageElement: UIImageView!
//reference to the name and age label
@IBOutlet weak var nameAgeLabel: UILabel!
}