2017-11-16 7 views
0

Ich versuche, eine iMessage App zu entwickeln, und ich bin mir nicht sicher, wie Werte von einer benutzerdefinierten Zelle an einen anderen View-Controller übergeben werden. Ich muss sicherstellen, dass nach dem Drücken der Taste der Wert aus der Zelle in den Sendebereich kopiert wird. Bitte hilf mir! Im hier fest:Wie Übergeben von Werten von einer benutzerdefinierten Zelle zu einem anderen Ansichtscontroller mithilfe globaler Variablen für iMessage?

This is the iMessage Code and instead of "hello world" it needs to put the label text from the cell

 let layout = MSMessageTemplateLayout() 
     layout.caption = "Hello World" 

     let message = MSMessage() 
     message.layout = layout 

     self.activeConversation?.insert(message, completionHandler: nil) 

The part which has the details on the cell in a different view controller

 func configureWithContactEntry(_ contact: ContactEntry) { 
     contactNameLabel.text = contact.name 
     contactEmailLabel.text = contact.email ?? "" 
     contactPhoneLabel.text = contact.phone ?? "" 


     return cell 

This is the CellForRow code

let cell = tableView.dequeueReusableCell(withIdentifier: 
    "ContactTableViewCell", for: indexPath) as! ContactTableViewCell 
    let entry = filteredContacts[(indexPath as NSIndexPath).row] 
    cell.configureWithContactEntry(entry) 
    cell.layoutIfNeeded() 

    return cell 

Wäre toll, wenn mir jemand helfen könnte!

+0

Bitte bearbeiten Sie Ihren Beitrag, um den Code, nicht Links zu Bildern des Codes zu enthalten. – pbasdf

+0

@ pbasdf- ja sicher wird das tun! Einen Augenblick! –

+0

Können Sie den Code veröffentlichen, wenn Sie zu einem anderen View-Controller wechseln? – Arrabidas92

Antwort

0

Sie können Ihre Zellendaten auf diese Weise an andere Controller in Ihrer Imessage-Erweiterung übergeben. Überprüfen Sie die Zelle ausgewählt Override-Funktion sein Aussehen wie

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
    print("cell selected at row \(indexPath.row)") 
} 

Get Modelldaten auf der Basis von indexPath von Ihrem Modell-Objekt, in Ihrem Fall, dass Sie von dieser Funktion erhalten sollte.

let entry = filteredContacts[(indexPath as NSIndexPath).row] 
let name = entry.name 

Danach erstellen Sie das Objekt Mescess und füllen Sie die Daten aus Ihrem Eintrag Objekt.

let session = MSSession() 
     let message = MSMessage(session: session) 
     let layout = MSMessageTemplateLayout() 
     layout.caption = name 


     message.layout = layout 

     //save the message in the current conversation context 

     self.savedConversation?.insert(message, 
             completionHandler: { (err) in 

             print("ERROR \(err.debugDescription)") 
     }) 

Auch wenn Sie Bild in Nachricht anhängen möchten, dann tun Sie es auf diese Weise.

 layout.image = UIImage(named:"image.png")! 
+0

Wohin soll das gehen ?? let entry = filteredContacts [(indexPath als NSIndexPath) .row] let name = entry.name @Shauket Sheik –

+0

in dieser übergeleiteten Methode didSelectRowAtIndexPath, danach können Sie dies im Layout verwenden –

Verwandte Themen