やあみんな、私は右navigationBarItem
にあるボタン(+)は、私はあなたがこのボタンをクリックすると、あなたはUITableViewCell
でcell
を作成する機能を作成しようとしています持っている、とあなたはそれをtitle
と与えることができますイメージ。UITableViewCellの創造
答えて
私はあなたのセルのデータを表現するための構造体を作成することから始めます。
struct Object {
var image: UIImage!
var title: String!
}
次に、Object
の配列をテーブルビューのデータソースにすることができます。
class ViewController: UITableViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// MARK: Properties
var object: Object?
var objects: [Object] = []
var picker: UIImagePickerController!
// MARK: Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
picker = UIImagePickerController()
picker?.allowsEditing = false
picker?.delegate = self
picker?.sourceType = .photoLibrary
}
// MARK: UITableViewDataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objects.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
let object = objects[indexPath.row]
cell.imageView?.image = object.image ?? UIImage()
cell.textLabel?.text = object.title ?? ""
return cell
}
// MARK: UIImagePickerControllerDelegate
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
switch info[UIImagePickerControllerOriginalImage] as? UIImage {
case let .some(image):
object?.image = image
default:
break
}
picker.dismiss(animated: true) {
self.showCellTitleAlert()
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
object = nil
dismiss(animated: true) {
self.tableView.reloadData()
}
}
// MARK: Alerts
private func showCellTitleAlert() {
let alert = UIAlertController(title: "Cell Title", message: nil, preferredStyle: .alert)
alert.addTextField { $0.placeholder = "Title" }
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel) {
self.object = nil
})
alert.addAction(UIAlertAction(title: "Save", style: .default) { _ in
self.object?.title = alert.textFields?.first.flatMap { $0.text }
self.object.flatMap { self.objects.append($0) }
self.tableView.reloadData()
})
present(alert, animated: true, completion: nil)
}
// MARK: Actions
@IBAction func didSelectCreateButton() {
object = Object()
present(picker, animated: true, completion: nil)
}
}
イメージを選択するにはイメージピッカーが必要です。アラートビューを使用して、タイトルのユーザー入力を行うことができます。 UIImagePickerControllerDelegate
に準拠させることにより、画像が選択されたとき、またはユーザがキャンセルしたときを検出することができます。
作成ボタンを押すと、空のオブジェクトが作成され、ピッカーが表示されます。選択したイメージをオブジェクトに埋め込んだ後、テキストフィールドのアラートビューを表示します。保存ボタンを押すと、オブジェクトがデータソースに追加され、テーブルビューがリロードされます。
それは完璧に働いていただきありがとうございます! –
よろしくお願いします! – Callam
データソースの値を更新してtableView.reloadData()
を使用できます。これにより、テーブルがリロードされ、新しいセルがテーブルに追加されます。したがって、あなたはそれにタイトルとイメージを与えることができます。
だけで、データソースのデリゲートメソッドで変数の値
@IBAction func addCell(sender:AnyObject) {
rowCount = rowCount + 1
tableView.reloadData()
}
に変更する機能を追加
が変数
var rowCount:Int = 0
を作成したデータソースの数を更新テーブルビューの、この変数を使用
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int { return rowCount }
- デリゲートメソッドで
設定されたタイトルと画像
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //add logic here return cell }
- 1. 創造
- 2. 創造
- 3. GeoPoint創造アンドロイド
- 4. はQtの創造主に
- 5. 矢印の創造的な使用
- 6. 日付パーティションの創造的な使用
- 7. タグを創造的に使用する
- 8. JBox2D 2.1.2エクスプレッション(新世界創造)
- 9. JavaScriptプログラミングの創造性を高める方法
- 10. レスポンシブなチェス盤を創造する方法
- 11. AkkaでPropsが俳優の創造にもたらす効果は?
- 12. html5キャンバスの独特で創造的な使用方法はありますか?
- 13. LogCatは何千ものメッセージを「創造オリエンテーション...」と書いています
- 14. Wordpressのヘッダー幅(創世記、プロ食通)
- 15. QListWidget MacのOS Xは、私はマックのQtの創造主にQListWidgetを使用し、異常
- 16. は、創造的な方法でWordPressのメニューを表示するのに助けが必要です
- 17. のUITableViewCell
- 18. UITableViewCellの
- 19. Wordpressのサイトのヘッダーの幅(創世記、プロ食通)
- 20. PrestaShopの1.7:数量は、新製品の創出
- 21. UITableViewCellの設定
- 22. はUITableViewCellの
- 23. のUITableViewCellマイテーブル
- 24. ラウンドレットのカスタムUITableViewCell
- 25. uitableviewcellのUIStepper
- 26. UITableviewcellのハンドルボタンイベント
- 27. UITableViewCellのUITextField
- 28. のUITableViewCellは
- 29. はUITableViewCellの
- 30. PerfomSegueのUITableViewCellクラス
テーブルビューに使用しているデータソースコードを表示します。 –