2017-03-04 3 views
0

Ich habe eine CollectionView, die ein Array von Beiträgen zurückgibt, [Post]. Innerhalb der collectionViews-Zellklasse (der eigentlichen Posts) habe ich eine Ansicht namens profileSegueContainer. Das isUserInteractionEnabled wird natürlich auf True gesetzt und ich habe eine UITapGestureRecognizer, die eine Funktion ausführt, wenn diese Ansicht angetippt wird. Diese Funktion präsentiert einfach einen anderen ViewController. Ich möchte die post.uid in diesen ViewController übergeben, wenn ich auf profileSegueContainer tippen. Wie erreiche ich das? Vielen Dank. Der entsprechende Code ist unten. Jeder möglicher Rat wird in hohem Grade geschätzt ...Swift 3: Pass im IndexPath in eine andere Klasse

class Post: NSObject { 

    var author: String? 
    var avatar_image_url: String? 
    var likes: Int? 
    var postImageUrl: String? 
    var uid: String? 
    var post_id: String? 
    var hashtags: [String]? 
} 

class PostCell: BaseCell { 

    var homeController: HomeController? 

    lazy var profileSegueContainer: UIView = { 
     let view = UIView() 
     view.isUserInteractionEnabled = true 
     return view 
    }() 

    override func setupViews() { 
     super.setupViews() 

     let tap = UITapGestureRecognizer(target: self, action: #selector(handleProfileSegue)) 
     profileSegueContainer.addGestureRecognizer(tap) 

     topBar.addSubview(profileSegueContainer) 
    } 

    func handleProfileSegue() { 
     let userProfileController = UserProfileController() 
     let navigationUserProfileController = UINavigationController(rootViewController: userProfileController) 
     homeController?.present(navigationUserProfileController, animated: true, completion: nil) 
    } 
} 
+0

Sie können mit benutzerdefinierten Tap Klasse achive, versuchen Sie diesen Code Import UIKit Klasse customTap: UITapGestureRecognizer { var objPost: Pfosten! = Nil } // verwenden wie: let tap = customTap (Ziel: Selbst, Aktion: #selector (handleProfileSegue :)) tap.objPost = yourPostDataobject profileSegueContainer.addGestureRecognizer (tap) –

+0

@Jay Mahta Dank Mann. Bedeutet viel. Könnten Sie bitte ein Beispiel geben? – Jimmy

+0

Ich habe meinen Kommentar aktualisiert. Schau es dir einmal an. –

Antwort

0

Hoffentlich verstehe ich Ihr Problem richtig. Sie möchten einen Wert in ein neues UserProfileController-Objekt übergeben?

der Unterkunft um Ihre UserProfileController hinzufügen

class UserProfileController : UIViewController { 
    public var postId : Int! 
// more stuff .... 
} 

Dann nur die Immobilie, die Sie zugreifen, nachdem Sie Ihr Objekt erstellen:

func handleProfileSegue(sender: UITapGestureRecognizer) { 
    let userProfileController = UserProfileController() 
    userProfileController.postId = 2345 
    // more stuff... 
} 

Lassen Sie mich wissen, ob dies ist, was man braucht. Wenn nicht, werden wir unsere Beiträge aktualisieren.

+0

leider, wenn ich versuche, die postId zu drucken, sobald der UserProfileController lädt, gibt es eine Null – Jimmy

+0

@Jimmy können Sie Ihre 'postId' in Ihrer' setupViews() 'Methode drucken? –

Verwandte Themen