質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

1834閲覧

swift xib

tosi_1211

総合スコア138

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/07/06 11:55

現在custom Viewを作っていて、

・ CustomView.swift
・ CustomView.xib

でxibファイルでたくさんsubViewをおいて関連付けしています。
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
comminInit()
}

private func comminInit() { let bundle = NSBundle(forClass: self.dynamicType) let nib = UINib(nibName: "Custom", bundle: bundle) let view = nib.instantiateWithOwner(self, options: nil).first as! ImagePostView view.translatesAutoresizingMaskIntoConstraints = true addSubview(view) let bindings = ["view": view] addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options:NSLayoutFormatOptions(rawValue: 0), metrics:nil, views: bindings)) addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[view]|", options:NSLayoutFormatOptions(rawValue: 0), metrics:nil, views: bindings)) }

そのCustomViewをCustoomViewControllerで、

loadViewメソッド内に
let cView = CustomView()
self.view = cView
でViewを置き換えています。
ですが、CustomViewにおいている部品が表示されません。どうすればいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

すみません、Custom class はわかりやすい様に命名しました。

ImagePostViewでxibもswiftファイルも統一されています。

投稿2016/07/07 03:33

tosi_1211

総合スコア138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tosi_1211

2016/07/07 03:36

なのでコードに書いてあるCustomViewはすべてImagePostViewになっています。少しImagepostViewの記述が残っていました。
tosi_1211

2016/07/07 11:34

画面は表示できました。しかし、scrollViewが部品としてあって、表示すると少し横スクロールできてしまうのですが、ぴったりサイズにするにはどうすればいいでしょうか?
guest

0

ベストアンサー

TakeOneさんが答えているので大丈夫かと思いますが、せっかく調べたので載せておきます。
参考にしてください。

※間違えを少なくするためにもxibの名前とクラス名は同じ名前にした方が良いと思います。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 } 9 10 override func loadView() { 11 super.loadView() 12 13 let customView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(self, options: nil).first as! CustomView 14 customView.frame = view.frame 15 self.view = customView 16 } 17} 18 19// CustomViewクラス 20class CustomView: UIView { 21 22 @IBOutlet weak var label: UILabel! 23 24 override func awakeFromNib() { 25 // 初期化処理 26 } 27 28 @IBAction func tapButton() { 29 print("Tap!") 30 label.text = "Tap!" 31 } 32}

イメージ説明

投稿2016/07/07 00:07

編集2016/07/07 00:21
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

let nib = UINib(nibName: "Custom", bundle: bundle)
じゃなくて
let nib = UINib(nibName: "CustomView", bundle: bundle)
ですよね。

そこを修正してコピペし、CustomView.xibとImagePostViewクラスを適当に作って動かしてみたら普通に表示できました。たぶんここに書かれてないCustomView.xibかImagePostViewクラスの問題かなと思います。

投稿2016/07/06 23:51

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tosi_1211

2016/07/07 06:18

これでやってもうまくいきませんでした。 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key amountLabel.'
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問