Как увеличить tableView на свитке? - PullRequest
0 голосов
/ 07 января 2019

Извините, если это дубликат. Я пытался рассмотреть подобные вопросы в SO, но до сих пор не совсем понимаю, как с этим справиться.

У меня есть tableView, три textView и UIButton. Когда пользователь прокручивает tableView, tableView должен вытолкнуть textFields и кнопку из изображения и занять больше места. Когда это будет сделано, я хочу продолжить прокручивать ячейки.

(я хочу, чтобы одно из текстовых полей всегда оставалось и отображало заголовок.)

Я думаю, мне нужно поместить textViews и кнопку над tableView внутри заголовка tableView, после чего мне нужно установить определенные ограничения между UIView над tableView и самим tableView. Затем мне нужно поиграться с UIScrollViewDelegate и что-то вычислить.

Как вы, ребята, можете сказать, я относительно новичок в программировании, и я верю в это, поэтому я не совсем понимаю связанные с этим вопросы. И, как вы, вероятно, тоже можете сказать, почему я чертовски запутался в том, как решить мою проблему!

Вот фотография ВК: My-VC

Я не хочу, чтобы tableView шел и покрывал AddNewPersonBtn и два нижних textView, оставляя только верхний textView, навигационную панель и tableView на экране. -> Пока вы снова не прокрутите вниз, а остальные будут видны снова.

И вот код для VC:

import UIKit
import RealmSwift

class AllPersonsInYourDiary: UIViewController, UITableViewDelegate, UITableViewDataSource {

var diary: Diaries?

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var showingDiaryName: UILabel!
@IBOutlet weak var showingDiaryQuestion: UILabel!
@IBOutlet weak var showingExtraIdentifer: UILabel!
@IBOutlet weak var diaryTheme: UIImageView!
@IBOutlet weak var diaryPhoto: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
    self.tableView.tableHeaderView = UIView()
}

override func viewWillAppear(_ animated: Bool) {
    tableView.reloadData()
    showDiaryIdentifiers()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func createNewPersonButton () {
    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier:
        "PersonViewController") as! PersonViewController
    controller.mode = .create
    controller.diary = diary
    self.navigationController?.pushViewController(controller, animated: true)
}

@IBAction func showEditFunc () {
    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SettingsVC") as! SettingsVC
    controller.diary = diary
    self.navigationController?.pushViewController(controller, animated: true)
}

func showDiaryIdentifiers () {
    self.showingDiaryName.text = diary?.diaryName
    self.showingDiaryQuestion.text = diary?.diaryQuestion
    self.showingExtraIdentifer.text = diary?.diaryExtraIdentifier
    self.diaryTheme.image = UIImage(data: diary?.diaryTheme ?? Data()) ?? UIImage(named: "Blank")
    // self.diaryPhoto.image = UIImage(data: diary?.diaryPhoto ?? Data ()) ?? UIImage(named: "Blank")
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return diary!.people.count
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Person1", for: indexPath) as! PersonCell
    let date = DateFormatter.localizedString(from: (diary?.people[indexPath.row].dateCreated)!, dateStyle: .short, timeStyle: .none)

    cell.personName.text = diary?.people[indexPath.row].name
    cell.personAnswer.text = date
    cell.personPhoto.image = UIImage(data: diary?.people[indexPath.row].photo ?? Data()) ?? UIImage(named: "PortaitPhoto")

    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier:
        "PersonViewController") as! PersonViewController

    controller.person = diary?.people[indexPath.row]
    controller.diary = diary
    controller.mode = .show
    self.navigationController?.pushViewController(controller, animated: true)
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        let alert = UIAlertController(title: "Are you sure you wish to delete person?", message: "", preferredStyle: .alert)
        let action = UIAlertAction(title: "No thanks!", style: .cancel)
        let action1 = UIAlertAction(title: "Delete!", style: .destructive, handler: { _ in
        let realm = try! Realm()
        try! realm.write {
            guard let person = self.diary?.people[indexPath.row] else {
                return
            }
            self.diary!.people.remove(at: indexPath.row)
            realm.delete(person)
        }
        tableView.deleteRows(at: [indexPath], with: .fade)
    })
        alert.addAction(action)
        alert.addAction(action1)
        present(alert, animated: true)
} } 
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...