こんにちは。
首記の件ですが、UITableViewでCustomCellを(複数)使用した場合に
その中の特定のCustomCellにアクセスする方法を教えてください。
【目的】
特定のCustomCell内にあるプロパティを操作したい
【詳細】
通常、CustomCellにアクセスしてその中身を操作したいと言った場合は
下記の様に、cellForRowAtIndexPathのメソッドの中でCustomCellを
登録した上でいろいろ操作していく、という形が一般的だと認識しています。
Swift
1func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 2 let customCell1:CustomCell1 = tableView.dequeueReusableCellWithIdentifier("customoCell1")! as CustomCell1 3 let customCell2:CustomCell2 = tableView.dequeueReusableCellWithIdentifier("customoCell2")! as CustomCell2 4 let customCell3:CustomCell3 = tableView.dequeueReusableCellWithIdentifier("customoCell3")! as CustomCell3 5 6 switch indexPath.section{ 7 case 0: 8 //プロパティにアクセス 9 let button:UIButton = cutomCell1.button 10 button.backgroundColor = UIColor.redColor() 11 button.addTarget..... 12 return cutomCell1 13 14 } 15}
その上で、今回知りたいのが、cellForRowAtIndexPathメソッドの外部で
上記と同様のことを行う方法です。
例えば、下記の様に行ったとしてもcustomCell内のプロパティには
アクセスすることはできませんでした。
まぁ実際に使用されているのはcellForRowAtIndexPath内で登録した
インスタンスのcellなので当然といえば当然でしょうけど。。。
Swift
1let cutomCell1 = CustomoCell1() 2let button = customCell1.button 3button.backgroundColor = UIColor.redColor()
なお、ネットで検索したところ、UITouchEventを使用してindexPathを
取得してそこからcellを指定するという方法もあるようですが
今回はこちらの方法を使用せずに、cellForRowAtIndexPathメソッドの外部の
任意の場所(例えば任意のfunc内など)からcustomCellを取得しアクセスする方法を教えていただきたいです。
よろしくお願いいたします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
【追記」
今回お聞きしたいセルの取得方法のイメージとしては、UITouchEventなど
何かしらのイベントを経由せずに特定のセルを直接定義し、取得する方法です。
UITouchEventによる方法ですと、タッチした位置に基づいたセルを
取得していると思いますが、このようなイベント等によってセルを定義をし
それに応じたセルを取得する方法ではなく、取得したいセル自体を
なんらかの形で直接定義してそれを変数などに保存し、取得したいと考えています。
例えば、以下のようなイメージです。
Swift
1class Sample: UIViewController...{ 2 //このようにUIEvent等に頼らずセル自体を直接定義し 3 //後のfunc内やメソッド等で自由にアクセスしたい。 4 let customCell1 = ...... 5 let customCell2 = ...... 6 7 override func viewDidLoad(){ 8 super.viewDidLoad() 9 //省略 10 } 11 12 func buttonTapped(sender: UIButton){ 13 //外部からCustomCell内のプロパティを操作したい 14 let label = cutomCell1.label 15 label.color = UIColor.redColor() 16 } 17 18 func imageAdd(sender: UIButton){ 19 //外部からCustomCell内のプロパティを操作したい 20 let imageView = customCell2.imageView 21 let image = UIImage(named: "sample") 22 imageView.image = image 23 } 24 25} 26
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/04 09:02