2016-07-19 8 views
0

私のnoobの質問は私に許してください。でも、本当に助けが必要です。私はswift2でIOS開発を学んでいます。 Unfortuantely、Views/Nibファイルを使って作業する場合、私が従ったチュートリアルは実際には高度なものにはなりません。外部ロードNibからIBOutlets/IBActionsを利用する

私はNibをロードするカスタムクラスを作成しようとしており、UIViewの新しくインスタンス化されたクラスのOutlets/Actionsで作業できます。

ビューを適切に読み込んでtableHeaderViewに挿入できる情報が見つかりましたが、失礼です。私は少しガイダンスが必要です。

ReserveHeaderCell.swift

class ReserveHeaderCell : UIView{ 


    @IBOutlet weak var ReserveHeaderImageView: UIImageView! 


    class func instanceFromNib() -> UIView { 
     return UINib(nibName: "ReserveHeaderCell", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! ReserveHeaderCell 
    } 

} 

私は、このクラスであることを私XIBでクラスを設定し、さらに、出口は親ビュー内のUIImageViewを指します。

ReserveViewController.swiftは含まれています

let reserveHeaderFrame: CGRect = CGRectMake(0,0,self.view.frame.size.width, 164) 
let rhCell = ReserveHeaderCell.instanceFromNib() 
rhCell.frame = reserveHeaderFrame 
ReserveTableView.tableHeaderView = rhCell 

そして、このすべての作品を。フレームが作成され、xibがロードされてビューに追加されます。問題は、ReserveHeaderCell.swiftファイルで定義されているIBOutletにアクセスできないということですまた、これが私がしようとしていることを達成するための正しい方法であるかどうかは本当に分かりません。 (OBJ-Cで行われる)私が達成しようとしています何

- (id)initWithFrame:(CGRect)frame { 
    if (self) { 
     NSArray *nib = [[NSBundle mainBundle] 
         loadNibNamed:@"HeaderNib" 
         owner:self 
         options:nil]; 

     self = [nib objectAtIndex:0]; 
     // ACTIONS GO HERE 

    } 
    return self; 
} 

Iがobj-C Hファイル(作成されたIBOutletsのいずれかへのアクセス権を持っていますが、私の場合のためにそのようにobj-cメソッドを使って、単にview.outlet = ""を呼び出してそれらにアクセスすることができます。

何か助けていただければ幸いです。助けになるチュートリアルへのリンクがあれば、それは感謝しています。

ありがとうございます。

答えて

0

あなただけのすべての画面に収まるように適切な制約を調整するために覚えている、そして、あなたのMenuHeaderは、その中にあなたのセルと通常の.xibファイルになりますあなたのnibファイル

let view = (NSBundle.mainBundle().loadNibNamed("MenuHeader", owner: self, options: nil)[0] as? UIView) 
tableView.tableHeaderView = view 

を初期化するために、このコードを使用することができますあなたがしたいこと。あなたのUIViewのクラスが既にある場合は、このクラスにnibファイルを接続し、次に "view.label.text"を使用して値を変更する必要があります。このビューの参照を保持するか、ヘッダー情報を変更する必要がある場合は、新しいビューを作成することを忘れないでください。アクションをトラッキングする場合は、デリゲートメソッドを使用するか、NSNotificationCenterを使用するのが最善の方法です。

+0

カスタムクラスを使用してロードしたいと思います。単にそれを直接tableviewにロードするだけではありません。なぜなら、xibの中には多くの入出力があるからです。特定のペン先にはおそらく問題ありませんが、このソリューションは、より詳細なレイアウト/出力/アクションを持つ同様の方法で他のものを実装する際に役に立ちます。 – Imperialized

+0

私はお詫び申し上げます。 1つの例外は、私をから変更する必要があったということでした! UIViewをそのまま! MyCustomClass。また、代わりにUINib()関数に変更しました。しかし、これは私に一般的な方向性を与えました。ありがとう – Imperialized

関連する問題