使用故事板自定义 Parse PFLoginViewController 的布局?
Customise the layout of Parse PFLoginViewController using Storyboards?
我正在使用 parse 构建一个应用程序,我想知道是否可以使用故事板直观地自定义 PFLoginViewController 的外观和布局?我知道可以对其进行子类化并使用代码对其进行自定义,但如果可能的话,我更愿意以视觉方式进行?
视觉上无法做到。但是,您可以通过故事板制作自己的自定义 class 并像这样制作它:
代码将看起来像这样用于解析:
导入 UIKit
导入解析
class CustomLoginViewController: UIViewController {
@IBOutlet weak var usernameField: UITextField!
@IBOutlet weak var passwordField: UITextField!
var actInd : UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0,0, 150, 150)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
self.actInd.center = self.view.center
self.actInd.hidesWhenStopped = true
self.actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
// MARK: Actions
@IBAction func loginAction(sender: AnyObject) {
var username = self.usernameField.text
var password = self.passwordField.text
if (username.utf16Count < 4 || password.utf16Count < 5) {
var alert = UIAlertView(title: "Invalid", message: "Username must be greater then 4 and Password must be greater then 5", delegate: self, cancelButtonTitle: "OK")
alert.show()
}else {
self.actInd.startAnimating()
PFUser.logInWithUsernameInBackground(username, password: password, block: { (user, error) -> Void in
self.actInd.stopAnimating()
if ((user) != nil) {
var alert = UIAlertView(title: "Success", message: "Logged In", delegate: self, cancelButtonTitle: "OK")
alert.show()
}else {
var alert = UIAlertView(title: "Error", message: "\(error)", delegate: self, cancelButtonTitle: "OK")
alert.show()
}
})
}
}
@IBAction func signUpAction(sender: AnyObject) {
self.performSegueWithIdentifier("signUp", sender: self)
}
}
我正在使用 parse 构建一个应用程序,我想知道是否可以使用故事板直观地自定义 PFLoginViewController 的外观和布局?我知道可以对其进行子类化并使用代码对其进行自定义,但如果可能的话,我更愿意以视觉方式进行?
视觉上无法做到。但是,您可以通过故事板制作自己的自定义 class 并像这样制作它:
代码将看起来像这样用于解析:
导入 UIKit 导入解析
class CustomLoginViewController: UIViewController {
@IBOutlet weak var usernameField: UITextField!
@IBOutlet weak var passwordField: UITextField!
var actInd : UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0,0, 150, 150)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
self.actInd.center = self.view.center
self.actInd.hidesWhenStopped = true
self.actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(self.actInd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
// MARK: Actions
@IBAction func loginAction(sender: AnyObject) {
var username = self.usernameField.text
var password = self.passwordField.text
if (username.utf16Count < 4 || password.utf16Count < 5) {
var alert = UIAlertView(title: "Invalid", message: "Username must be greater then 4 and Password must be greater then 5", delegate: self, cancelButtonTitle: "OK")
alert.show()
}else {
self.actInd.startAnimating()
PFUser.logInWithUsernameInBackground(username, password: password, block: { (user, error) -> Void in
self.actInd.stopAnimating()
if ((user) != nil) {
var alert = UIAlertView(title: "Success", message: "Logged In", delegate: self, cancelButtonTitle: "OK")
alert.show()
}else {
var alert = UIAlertView(title: "Error", message: "\(error)", delegate: self, cancelButtonTitle: "OK")
alert.show()
}
})
}
}
@IBAction func signUpAction(sender: AnyObject) {
self.performSegueWithIdentifier("signUp", sender: self)
}
}