2016-07-05 16 views
0

Ich habe folgendes: 1. UIView Dragged es in dem Band Viewcontroller Dragged UIView to place it in the ViewController ribbonWie füge ich eine UIView, die im Storyboard erstellt wurde, als Pop-up in Swift hinzu?

zu platzieren
  1. eine benutzerdefinierte UIView Klasse erstellt und hinzugefügt, um die Ausgänge zum 'Profil bearbeiten anzeigen "Blickfelder:

Import UIKit

Klasse EditProfileView: UIView {

let globalDataHandler = GlobalDataHandler.sharedInstance 

@IBOutlet weak var firstNameTextField: UITextField! 
@IBOutlet weak var lastNameTextField: UITextField! 
@IBOutlet weak var userNameTextField: UITextField! 
@IBOutlet weak var passwordTextField: UITextField! 
@IBOutlet weak var emailTextField: UITextField! 
@IBAction func saveEditButton(sender: AnyObject) { 
} 
@IBAction func cancelEditButton(sender: AnyObject) { 
} 

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
override func drawRect(rect: CGRect) { 
    // Drawing code 
} 
*/ 

}

  1. Gave 'EditProfileView' Klasse, die als Kundenspezifische Klasse für die 'Profil bearbeiten Ansicht' Blick in Storyboard.

  2. ein Objekt für 'EditProfileView' Klasse in ProfileViewController und fügte den 'Profil bearbeiten Ansicht' Blick auf die Hauptansicht nach dem Klicken auf Bearbeiten-Button in ProfileViewController Erstellt.

Klasse ProfileViewController: UIViewController {

let profileView = EditProfileView() 

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

@IBAction func editProfileButton(sender: AnyObject) { 
    profileView.firstNameTextField.text = "First Name" 
    profileView.lastNameTextField.text = "Last Name" 
    profileView.userNameTextField.text = "User Name" 
    profileView.emailTextField.text = "Email" 
    let testFrame : CGRect = CGRectMake(50,100,300,300) 
    profileView.frame = testFrame 
    self.view.addSubview(profileView) 
} 

}

Aber das 'Profil bearbeiten Ansicht' Ansicht nicht auf ProfileViewController erscheint. Bitte helfen.

+0

Warum gehst du nicht einfach machen 'profileView' und IBOutlet der Ansicht, die Sie in das Storyboard, indem Sie auf„Profil bearbeiten View“im Dokument Umriss und Steuerelement gezogen Ziehen Sie in Ihren 'ProfileViewController'? Die Initialisierung in Code wie 'EditProfileView()' wird nicht den gewünschten Effekt haben, da es einen überschriebenen Initialisierer gibt, der Ihre Subviews einrichtet. – beyowulf

Antwort

0

Sie müssen Ihre UIView und Ihre Ansicht (sollte ein eigener UIViewController sein) in der Xib verknüpfen.

profileView = storyboard.instantiateViewControllerWithIdentifier("ProfileViewController") 

Sie müssen eine UIPresentationController für Ihre ProfileVC haben

class ProfilePresentationController : UIPresentationController { 
    override func frameOfPresentedViewInContainerView() -> CGRect { 
     return CGRect(x: (presentingViewController.view.frame.width/2.0) - 150.0, y: (presentingViewController.view.frame.height/2.0) - 100.0, width: 300.0, height: 200.0) 
    } 
} 

Ihre EditProfileView muss folgende Delegierte implementieren:

UIViewControllerTransitioningDelegate 

die folgenden Eigenschaften Ihres profileView muss auch festgelegt werden:

profileView.modalPresentationStyle = UIModalPresentationStyle.Custom 
profileView.transitioningDelegate = self 

Danach können Sie den Delegaten erforderlich Methode implementieren

func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? { 
     return ProfilePresentationController(presentedViewController: presented, presentingViewController: presenting) 
}