2016-07-28 4 views
1

私はこのようないくつかのオブジェクトを含むビュー(緑の面積が私の見解です)している: enter image description hereビューはコピーされません

Iを押すたびに、「アイテム」新色のオブジェクトは、この行に追加されますビューの "行"ボタンは、この行をそのままコピーし、押したときにこの行の上に置くと、2つ(または複数)の行が上に表示されます。私はこのような行のボタンのアクションを作った:

let hc = contentView1 
    hc?.setFrameOrigin(NSPoint(x: 0, y: (positionY*50))) 
    positionY += 1 

    contentView2?.addSubview(hc!) 

が、私は押すたびに、ボタン、同じ行は、ちょうどこのように、移動し、コピーしないこと:

enter image description here

私は何間違っている?

+0

あなたはアイテムボタンのコードを追加することはできますか? – WMios

+0

ねえ:)編集のおかげで、あなたはお互いの代わりにイメージを配置しました。 ボタンにはコードがありません。ただNSButtonです – omgtheykilledkenny

+0

私のxcodeプロジェクトを追加しましたので、今すぐ見ることができます。 – omgtheykilledkenny

答えて

0

ビューにスーパービューが1つあり、スーパービューにビューを追加するたびに、そのビューは以前のスーパービューから削除されます。 NSViewNSCopyingプロトコルを実装していないので、copyを呼び出してビューをコピーすることはできません。 SOの 'コピーNSView'を検索します。

0

コピーしたいビューと同じ新しいビューを作成しているようです。しかし、NSViewsは参照型であり、値型ではありません。したがって、あるビューを編集すると、他のビューが編集されます。

let archivedView = NSKeyedArchiver.archivedDataWithRootObject(contentView1) 
let hc = NSKeyedUnarchiver.unarchiveObjectWithData(archivedView) 

そして残りを行います:あなたはこのようなビューを複製することができるように

NSViewは幸運にも、NSCodingプロトコルを実装

hc?.setFrameOrigin(NSPoint(x: 0, y: (positionY*50))) 
positionY += 1 
contentView2?.addSubview(hc!) 
+0

の 'unarchiveObjectWithData'の場合のプロジェクトへのリンクがありますエラー '未解決の識別子の使用 ' – omgtheykilledkenny

+0

コードをダブルチェックしてください。私は 'NSKeyedArchiver'を含むことを忘れていました。 – WMios

+0

いやこれはエラーです:タイプ 'NSKeyedArchiver'にはメンバ 'unarchiveObjectWithData'がありません – omgtheykilledkenny

関連する問題