###前提・実現したいこと
・cellの個数が10個以上ある場合にtableFooterViewを表示しない <-- hidden = falseで非表示には出来る
・cellの個数が10個以上ある場合にtableFooterViewの高さを0にしたい
###発生している問題・エラーメッセージ
EXC_BAD_ACCESS (code=2,address=0x16fc7ffe0)
###該当のソースコード
Swift
1class ViewController: UIViewController, UITableViewDataSource { 2 override func viewDidLoad() { 3 super.viewDidLoad() 4 5 myTable.tableFooterView = UIView() 6 7 let window = UIScreen.mainScreen().bounds.size 8 let myImage = UIImage(named: "footer") 9 let myImageView = UIImageView(frame: CGRectMake(0, 0, window.width, (myImage?.size.height)!)) 10 11 myImageView.image = myImage 12 myImageView.contentMode = .ScaleAspectFill 13 myTable.tableFooterView = myImageView 14 15 } 16 17 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 18 19 if article.count >= 10 { 20 let window = UIScreen.mainScreen().bounds.size 21 let myImageView = UIImageView(frame: CGRectMake(0, 0, window.width, 0)) 22 tableView.tableFooterView = nil 23 tableView.tableFooterView = myImageView 24 } 25 return article.count 26 27 } 28}
###試したこと
10個以上の場合にtableFooterView
に一旦nil
を代入し、
新しいUIImageView
の高さが0のものを代入している。
###補足情報(言語/FW/ツール等のバージョンなど)
・Xcode7.3.1
・Swift2
###追記(ご回答を実装後)
Swift
1class ViewController: UIViewController, UITableViewDataSource { 2 3 @IBOutlet weak var myTable: UITableView! 4 5 var cnt = 15 6 var myImageView: UIImageView? 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10// let window = UIScreen.mainScreen().bounds.size 11// let myImage = UIImage(named: "footer") 12// myImageView = UIImageView(frame: CGRectMake(0, 0, window.width, (myImage?.size.height)!)) 13// 14// myImageView!.image = myImage 15// myImageView!.contentMode = .ScaleAspectFill 16// myTable.tableFooterView = myImageView 17 } 18 19 override func viewWillAppear(animated: Bool) { 20// if cnt >= 10 { 21// myImageView?.hidden = true 22// myImageView = UIImageView(frame: CGRectMake(0,0,0,0)) 23// myTable.tableFooterView?.frame.size.height = 0.0 24// } 25 myTable.reloadData() 26 super.viewWillAppear(animated) 27 } 28 29 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 30 return cnt 31 } 32 33 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 34 let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 35 let label = cell.viewWithTag(1) as! UILabel 36 label.text = "\(indexPath.row + 1)" 37 return cell 38 } 39 40}
※左が該当部分をコメントアウト、右がコメントアウトなし(Footer追加時、本来はこのスペースに画像あり)
基本的にはFooterを追加しておいて、ある条件下にのみ、左のように詰めて表示したいのですが。。。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。