2017-02-02 14 views
0

が、私はこのような何かをしようとしています:ボタンクリックでテーブルセルにImageViewを追加するにはどうすればよいですか?

ユーザーがクリックした

enter image description here

は、「ページの追加、」新しいグループは、その下に表示されます。今、私はこれを達成するためにTable Viewセルを使用することに決めました。さまざまなチュートリアルに従って、同様のQを探していた後で、私はUILabelでボタンをクリックしてセルを追加することができ、セルの高さをコンテンツに応じて動的にすることができましたが、今はImageViewsとボタンを追加する方法を解明しようとしています細胞。

私はカスタムセルクラス作成しました:私の問題は、私はImageViewのはということである場所を示すボックスを取得しようとしていますということです

class TakePhotosVC: UITableViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.register(PageCell.self, forCellReuseIdentifier: "cellID") 
    } 

    // return the actual view for the cell 
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let pagecell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath) as! PageCell 
     // set more stuff here 
    } 

    ... // more code 
} 

:私のTableViewControllerで

class PageCell : UITableViewCell { 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 

     self.selectionStyle = UITableViewCellSelectionStyle.none 

     setupViews() 
    } 

    ... 
    ... // other random code here 


    let imgView : UIImageView = { 
     let imgview = UIImageView() 
     imgview.frame = CGRect(x: 100, y: 150, width: 150, height: 140) 
     imgview.tintColor = UIColor(red: 0.73, green: 0.2, blue: 0.3, alpha: 1.0) 
     imgview.translatesAutoresizingMaskIntoConstraints = false 
     return imgview 
    }() 

    func setupViews() { 
     addSubview(pageLabel) // the label that I got working 
     addSubview(imgView) // can't get this working 
     ... 
     // constraint info here 
    } 
} 

とバックをユーザーは画像をクリックして読み込むことができます。私はそれを行う方法がわかりませんし、関連するボタンもすべて入れてください(ゴミ箱、Xなど)

ご協力いただければ幸いです。

EDIT

さて、私はthisチュートリアルに従うことをしようとしていたと私はかなりそれを動作させることはできません。私のプロトタイプのセルでは、私はこれを参照してください。

enter image description here

をしかし、結果はこれです:私はそれを見ることができるようにUIImageViewがバックグラウンドを持って作られた

enter image description here

UIImageViewには2つの制約があります:幅= 240、高さ= 128、幅= 240、高さ= 21の2つの制約:Page Label 2つの質問:正しく配置されているのはなぜですかストーリーボードに置かれますか?そして、要素を収容するためにセルの高さが動的にサイズ変更されないのはなぜですか?

TakePhotosVCviewDidLoadメソッドにこれらの2行がありますが、何もしないようです。

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 200 

関連性がある場合は、シミュレータを実行するとこの警告が表示されます。一度だけ警告

:制約曖昧 ケースを検出は、テーブルビューのセルのコンテンツビューのためのゼロの高さを示唆しています。我々は を意図的に崩壊させ、代わりに標準の高さ を使用しています。 2

EDITは、私はそれが動作するようになりました。私の後でこれを読んでいる貧しい人々のためには、Constraintsウィンドウエディタでピンクの点線をクリックしてから、「Add X Constraints」をクリックしてImageViewを中央に置き換えなければなりません。

答えて

0

私の問題は、ImageView がどこにクリックして写真を読み込むことができるかを示すボックスを取得しようとしていることです。私はへ はそれを行うと、同様(ゴミ箱、X、など)

私は私が正しくあなたを理解すればわからないが、関連するすべてのボタンを配置する方法がわからないと思います。あなたはUIImageViewを持つセルを持っています。しかし、ユーザーがUIImage(?)を追加するためにタッチする場所を視覚的に指示したい場合は、画像を追加する操作を行い、画像が正常に追加されたら、UIButtonをhiddenに設定することができます。

ユーザーがごみ箱ボタンを使用して画像を削除した場合は、単にUIButtonをhidden = NOで再表示します。

その他の解決策: UIImageViewにカスタム色で境界線を追加し、UITapGestureRecognizerを追加してアクションを開始します。 (あなたがYES = userInteractionEnabledにUIImageViewを設定していることを確認し、カスタムデザインとは、画像のセットは、存在しないときは、allso UIImageViewにプレースホルダ画像を追加することができます

+0

これは私がやりたいことです(ImageViewの上にボタンを追加する)。今のところ、私はImageViewを表示しようとしています。私は国境を追加するためのあなたの提案を試みます。 – noblerare

+0

イメージセットがない場合、UIImageViewは視覚的に「表示」されません。背景色を赤や青のように設定することができ、画像がないときは視覚的に見ることができます。 –

0

最も簡単な方法は、使用することです。 xibを選択する代わりに、新しいファイルを追加してxibを選択します。xibでは、画像ビューでテーブルビューセルを事前作成することができ、すでに制約のあるボタンを配置することができます。このテーブルビューセルをサブクラス化し、画像ビューとボタンをibアウトレットとibアクションで接続してボタンと画像ビューにアクセスし、次にcellForRow関数で次のようにxibをロードします。

Bundle.main.loadNibNamed("NameOfNib", owner: self, options: nil).first as! NameOfSubclass 

xibsとnibsについてもっと読むことをお勧めします。

関連する問題