在Xcode中添加文本文件和发送按钮(发送至)

时间:2018-07-23 15:17:39

标签: swift tableview textfield

我正在构建一个简单的应用程序,使您可以预订信息设备或教室中的座位。在表格视图中,我插入图像和一些文本。我该如何在底部添加文本字段和按钮,向我发送包含预订摘要的邮件?

这是我到目前为止构建的代码。

TableViewController

import UIKit
struct CellData {
    let image : UIImage?
    let message : String?
}
class TableViewController: UITableViewController {

var data = [CellData] ()

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    data = [CellData.init(image:  imageLiteral(resourceName: "printer"), message: "Stampante 3D"),CellData.init(image:  imageLiteral(resourceName: "printer"), message: "Stampante 3D"),CellData.init(image:  imageLiteral(resourceName: "printer"), message: "Stampante 3D")]

    self.tableView.register(CustomCell.self, forCellReuseIdentifier: "custom")
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.estimatedRowHeight = 200

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCell(withIdentifier: "custom") as! CustomCell
    cell.mainImage = data[indexPath.row].image
    cell.message = data[indexPath.row].message
    cell.layoutSubviews()
    return cell
}


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return data.count
}
}

自定义单元格

import Foundation
import UIKit

class CustomCell: UITableViewCell {

var message : String?
var mainImage : UIImage?

var messageView : UITextView = {
    var textView = UITextView()
    textView.translatesAutoresizingMaskIntoConstraints = false
    textView.isScrollEnabled = false
    return textView
}()

var mainImageView : UIImageView = {
    var imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    return imageView
}()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    self.addSubview(mainImageView)
    self.addSubview(messageView)

    mainImageView.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true
    mainImageView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
    mainImageView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
    mainImageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
    mainImageView.heightAnchor.constraint(equalToConstant: 100).isActive = true


    messageView.leftAnchor.constraint(equalTo: self.mainImageView.rightAnchor).isActive = true
    messageView.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true
    messageView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
    messageView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
}

override func layoutSubviews() {
    super.layoutSubviews()
    if let message = message {
        messageView.text = message
    }
    if let image = mainImage{
        mainImageView.image = image
}        }



required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}

谢谢!

1 个答案:

答案 0 :(得分:3)

我认为您指的是创建一个类似聊天的窗口,如果正确的话,解决此问题的一种方法是为键盘事件添加处理程序,以移动顶视图。在这种情况下,您可以从以下内容开始:

首先,您需要在通知中心添加一些观察者,以侦听键盘显示或隐藏时的声音。

override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)            
    }   

然后,您需要创建事件发生时要触发的功能。如您在以下代码中所看到的,视图的视图框架已根据keyboardSize进行了修改。

func keyboardWillShow(notification: NSNotification) {            
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
        self.view.frame.origin.y -= keyboardSize.height
    }            
}

func keyboardWillHide(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
        self.view.frame.origin.y += keyboardSize.height
    }
}

因此,为澄清起见,您需要在表格下方创建第二个视图,在其中添加文本字段和发送按钮。