2016-07-18 6 views
1

私が使用してお店を示すカスタム細胞とのtableViewを持っていた:カスタムSubViewをプログラム的にロードしてセルのようにしますか?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell : shopsTableViewCell = tableView.dequeueReusableCellWithIdentifier("shopCell", forIndexPath: indexPath) as! shopsTableViewCell 

しかし、我々は、メインビューにスクロールビューを追加しているため、Appleはお勧めしません/ scrollViewtableViewを混在させることができ、私は削除しましたカスタムビューをカスタムUIViewのものに置き換えました。 私は同じ振る舞いを進めたいと思います: 1 - 配列の中にいくつの値があるかを検出します。 2 - 各配列インデックスのUIViewをインスタンス化します 3 - UIViewにimage、position、constraintsなどの値を設定します 4 - 現在のビューに追加します。

私はストーリーボードを使用していますが、ストーリーボードからカスタムUIViewをインスタンス化する方法はどこにも表示されません。また、このUIViewは、ViewController内にあるサブビューです。私は、このカスタムクラスにサブビュー「接続ショップ」を接続している私の絵コンテで

import Foundation 
import UIKit 
class connectedShop : UIView{ 

    @IBOutlet weak var bannerViewHight: NSLayoutConstraint! 

    @IBOutlet weak var bannerViewTop: NSLayoutConstraint! 
    @IBOutlet weak var bannerViewLeft: NSLayoutConstraint! 
    @IBOutlet weak var bannerViewRight: NSLayoutConstraint! 

    @IBOutlet weak var banerDiscount: UIImageView! 
    @IBOutlet weak var bannerImageShop: UIImageView! 
    @IBOutlet weak var bannerTitle: UILabel! 
    @IBOutlet weak var bannerDescription: UILabel! 
    @IBOutlet weak var bannerButton: UIButton! 

    @IBAction func bannerButtonAction(sender: UIButton) { 

    } 

} 

は、私が店でカスタムUIViewクラスをしました。またのCustomViewにストーリーボードイドを設定します。私はにtableViewに行うために使用するように、このカスタムサブビュー、接続された各ショップのための1つのインスタンスを作成したい

enter image description here

import Foundation 
import UIKit 
class customShop : UIView{ 

    var bannerViewHight: NSLayoutConstraint! 
    var bannerViewTop: NSLayoutConstraint! 
    var bannerViewLeft: NSLayoutConstraint! 
    var bannerViewRight: NSLayoutConstraint! 
    var banerDiscount: UIImageView! 
    var bannerImageShop: UIImageView! 
    var bannerTitle: UILabel! 
    var bannerDescription: UILabel! 
    var bannerButton: UIButton! 

} 

、これをしようと:: 私もコンセントなしに、新しいカスタムクラスを作成しようとした私はこれを試してみましたが、それは

let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
       let viewController = storyBoard.instantiateViewControllerWithIdentifier("customView") 

をクラッシュだ

var connectedShop : customShop = customShop() 

       connectedShop.bannerTitle.text = "custom Shop" 
       self.view.addSubview(connectedShop) 

しかし、それは、このエラーでクラッシュです:

fatal error: unexpectedly found nil while unwrapping an Optional value 

誰も助けてくれますか?

+0

私はそれが –

答えて

0
let shopVw = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("customView") as! shopViewController 
self.navigationController?.pushViewController(shopVw, animated: true) // this is the code for navigation 
+0

マイカスタムビュークラスはUIViewのを継承するナビゲーションの問題だと思います。あなたのコードはのUIViewControllerのためですが、私はUIViewのを持っていると私はこのエラーを取得しています: は「のUIViewController」 – user3033437

0

てみペン先をロードし、あなたのクラスにキャストします

let view = NSBundle.mainBundle().loadNibNamed("YourClassView", owner: self, options: nil).first as! YourClassView 

警告:あなたはviewDidLoadでXIBを読み込むことができますが、制約セットを持つためにviewWillLayoutSubviewsにビューで操作しなければならないし、あなたのビューは適切な大きさになっています。

+0

私はクラッシュを抱えている期待される引数の型に型「connectedShop」の値を変換できません。なぜなら、私がインスタンス化しようとしているサブビューは、nibファイルではなく、ストーリーボードのシーンの内側にあるからです。 ***キャッチされない例外により「NSInternalInconsistencyException」、理由にアプリを終了:「バンドル内NIBをロードできませんでした。 『NSBundle (ロード)のCustomView『』名前の』」 – user3033437

関連する問題