MyTapCell1.Swift
これはカスタムUITableViewCell View
import UIKit
class TapCell1: UITableViewCell
{
@IBOutlet var labelText : UILabel
init(style: UITableViewCellStyle, reuseIdentifier: String!)
{
println("Ente")
super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
}
override func setSelected(selected: Bool, animated: Bool)
{
super.setSelected(selected, animated: animated)
}
}
私ViewController.Swift
そのすべてのデータソースとデリゲートは正しく設定されていますが、カスタムセルが表示されていません。
import UIKit
class NextViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
@IBOutlet var label: UILabel
@IBOutlet var tableView : UITableView
var getvalue = NSString()
override func viewDidLoad()
{
super.viewDidLoad()
label.text="HELLO GOLD"
println("hello : \(getvalue)")
self.tableView.registerClass(TapCell1.self, forCellReuseIdentifier: "Cell")
}
func tableView(tableView:UITableView!, numberOfRowsInSection section:Int)->Int
{
return 5
}
func numberOfSectionsInTableView(tableView:UITableView!)->Int
{
return 1
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
{
var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TapCell1
cell.labelText.text="Cell Text"
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
問題は、カスタムセルが表示されないことです。私が間違ったことを何か提案してください。
注:ここに私のコード マイファイルダウンロードリンク
やっとやった。
TapCell1.Swiftの場合
import UIKit
class TapCell1: UITableViewCell {
@IBOutlet var labelTitle: UILabel
init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
}
}
NextViewController.Swiftの場合
import UIKit
class NextViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView
var ListArray=NSMutableArray()
override func viewDidLoad() {
super.viewDidLoad()
let nibName = UINib(nibName: "TapCell1", bundle:nil)
self.tableView.registerNib(nibName, forCellReuseIdentifier: "Cell")
for i in 0...70 {
ListArray .addObject("Content: \(i)")
}
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int)->Int {
return ListArray.count
}
func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 51
}
func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
return 1
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TapCell1
//cell.titleLabel.text = "\(ListArray.objectAtIndex(indexPath.item))"
cell.labelTitle.text = "\(ListArray.objectAtIndex(indexPath.row))"
return cell
}
}
私の作業コードのリンク: CUSTOMISED TABLE
セルのclass
を登録する必要があります。そのためには、このコード行を
self.tableView.registerClass(TapCell1.classForCoder(), forCellReuseIdentifier: "Cell")
編集
あなたのコードは問題ないようです
//cell.labelText.text="Cell Text"
cell.textLabel.text="Cell Text" // use like this
解決策は、セルの高さを次のように手動で設定することである可能性が最も高くなります。
override func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
return 44
}
Xcode beta 6のバグだと思います。
これで、カスタムUITableViewCellが機能するようになりました。
Xcode 6ベータ5で実行
iOSは7.1
この方法で行うと、クラス/ペン先などを登録する必要はありません。
これは私のカスタムセルです。
import UIKit class TestCell:UITableViewCell { @IBOutlet var titleImageView:UIImageView! @IBOutlet var titleLabel:UILabel ! init(style:UITableViewCellStyle、reuseIdentifier:String!){ super.init(style:style、reuseIdentifier:reuseIdentifier) } override func awakeFromNib(){ super.awakeFromNib() //初期化コード } init required (コーダーaDecoder:NSCoder){ super.init(coder:aDecoder) } }
ビュー内、または「UITableViewDataSource」を拡張する場所。 「cell2」が、ストーリーボードを介して指定した「識別子」と同じであることを確認してください。
func tableView(tableView:UITableView !, cellForRowAtIndexPath indexPath:NSIndexPath!)-> UITableViewCell! { var cell:TestCell = tableView.dequeueReusableCellWithIdentifier( "cell2"、forIndexPath:indexPath)as TestCell //カスタム要素の使用例。 cell.titleLabel.text = self.items [indexPath.row] var topImage = UIImage(named: "fv.png") cell.titleImageView。 image = topImage return cell }
次のコードを試してください
var cell:CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier("CustomTableViewCell") as CustomTableViewCell
Storyboardを使用していない場合は、UITableViewCellのサブクラスとして新しいファイルを作成し、カスタムセルを設定した後に「xibファイルも作成する」チェックボックスをオンにします。これがtableviewのコードです。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var customcell:CustomTableViewCellClass? = tableView.dequeueReusableCellWithIdentifier("cell") as? CustomTableViewCellClass
if (customcell==nil)
{
var nib:NSArray=NSBundle.mainBundle().loadNibNamed("CustomTableViewCellClass", owner: self, options: nil)
customcell = nib.objectAtIndex(0) as? CustomTableViewCell
}
return customcell!
}
次のコードを試してください:
var cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellTableView") as? CustomCellTableView
ストーリーボードをチェックしてセルを選択し、「選択したクラスのIDインスペクタを見て、CustomClassを入力し、MODULEがプロジェクト名を入力します。
私はこれを行いました完全に動作しますこのヒントを試してエラーを回避し、以下の画像とコードを確認してください
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
// let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)
// cell.textLabel.text = array[indexPath!.row] as String
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomTableViewCell
cell.nameLabel.text = array[indexPath!.row] as String
cell.RestaurentView.image = UIImage(named:images[indexPath!.row])
return cell
}
NSObjectの拡張
extension NSObject {
var name: String {
return String(describing: type(of: self))
}
class var name: String {
return String(describing: self)
}
}
カスタムUITableViewCellのプロパティ
class var nib: UINib {
return UINib(nibName:YourTableViewCell.name, bundle: nil)
}
class var idetifier: String {
return YourTableViewCell.name
}
IViewControllerに追加
self.tableView.registerNib(YourTableViewCell.nib, forCellReuseIdentifier: YourTableViewCell.idetifier)
let cell = tableView.dequeueReusableCellWithIdentifier(YourTableViewCell.idetifier, forIndexPath: indexPath) as! YourTableViewCell