小编Ant*_*nyR的帖子

不调用委托方法(transitioningDelegate)

我正在尝试在两个viewControllers之间实现自定义转换.(Swift 3.0)

在我的两个viewControllers之间,我有一个UISeguekind show(animated = true).

所以我UIViewControllerTransitioningDelegate在第一个视图控制器的扩展中设置了委托方法:

extension DocumentsViewController : UIViewControllerTransitioningDelegate { ... }
Run Code Online (Sandbox Code Playgroud)

我还通过协议实现了所需的方法:

animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
     ...
}

public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
     ...
}
Run Code Online (Sandbox Code Playgroud)

现在当segue执行时,在firstViewController我使用委托方法prepareForSegue最终设置transitioningDelegate为我的`secondViewController,见下文:

public override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    super.prepare(for: segue, sender: sender)
    if let destination = segue.destination as? DocumentDetailViewController {
        destination.transitioningDelegate = self
    } …
Run Code Online (Sandbox Code Playgroud)

ios swift

11
推荐指数
2
解决办法
5953
查看次数

Vapor 框架:使用 SSL 配置 postgres 连接

我正在尝试连接到我的 Heroku PostgreSQL 数据库,但出现以下错误:

cannotEstablishConnection("FATAL:  no pg_hba.conf entry for host \"37.167.93.189\", user \"clpnkpyttmdtyq\", database \"d3h6147v73mgtu\", SSL off\n")
Run Code Online (Sandbox Code Playgroud)

我知道 Heroku postgres 数据库需要使用 SSL 连接,但我不知道如何在我的Droplet对象上配置连接。

这是我的postgresql.json配置文件:

{
    "host": "ec2-54-163-224-108.compute-1.amazonaws.com",
    "user": "clpnkpyttmdtyq",
    "password": "99201aa07c48e18e7bdf210937857b85bee37cd8d8cb904381b1ddff934c7a4f",
    "database": "d3h6147v73mgtu",
    "port": 5432
}
Run Code Online (Sandbox Code Playgroud)

也许有ssl我不知道的参数?

我如何添加VaporPostgresSQLProvider

let drop = Droplet()

// Tell the droplet to use our SQL provider service
try drop.addProvider(VaporPostgreSQL.Provider.self)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

当我尝试使用本地 postgres 数据库时,它可以工作,因为它不需要 ssl 连接。

postgresql ssl heroku vapor

6
推荐指数
1
解决办法
984
查看次数

如何通过iOS中的套接字从服务器接收数据?

我有一个应用程序,我必须使用套接字连接将数据发送到服务器并读取将由服务器发送的数据.我正在使用AsyncSocket类来写入和读取数据.我成功地在服务器上写入数据,服务器可以看到应用程序发送的数据.现在,问题是每当服务器向应用程序发送一些数据时,我如何使用AsyncSocket类接收这些数据.以下是我的代码.我把代理方法用于读取数据,但它从未调用过.

var socket = AsyncSocket()

socket = AsyncSocket(delegate: self)
self.socketConnect()

func socketConnect() {
        do {
            try socket?.connectToHost("IP Address", onPort: 6968)
        } catch _ as NSError {

        }
    }



//MARK: - AsyncSocket Delegates method

    func onSocket(sock: AsyncSocket!, didConnectToHost host: String!, port: UInt16) {
        print("Connected to host : \(host) with Port : \(port)")


        let alert:UIAlertController = UIAlertController(title: "Connected", message: "Host:\(host) ** Port:\(port)", preferredStyle:.Alert)
        self.presentViewController(alert, animated: true, completion: nil)
        let action:UIAlertAction = UIAlertAction(title: "Ok", style: .Default) { (UIAlertAction) -> …
Run Code Online (Sandbox Code Playgroud)

sockets xcode asyncsocket ios swift

5
推荐指数
1
解决办法
1053
查看次数

UIView - 持续时间的动画似乎忽略了持续时间

我遇到了一个问题:我有一个非常简单的习惯UIView,它将一个UITextField和一个组合在一起UILabel.

UILabel是对UITextField的,我想的是,UILabel当用户开始编辑上升到40像素UITextField.

我正在使用约束来设置文本字段的框架和标签的框架.

所以我只是在我的自定义视图中使用UITextFieldDelegate协议设置委托,并实现委托方法:textFieldDidBeginEditing,如下:

我只是在委托方法中设置标签的约束(中心Y).

func textFieldDidBeginEditing(textField: UITextField) {
    self.centerVerticallyLabelConstraint.constant = -40
    UIView.animateWithDuration(0.5) {
        self.textFieldLabel.layoutIfNeeded()
    }
}
Run Code Online (Sandbox Code Playgroud)

会发生什么事情是UILabel正确的,但它会立即上升.它忽略了0.5我动画中的持续时间.我不知道为什么:

显示问题图像

我不是同时动画其他东西,我只有这个动画.我没有禁用动画为UIView. 委托设置为我的UITextfield.

任何的想法?

animation uiview uiviewanimation ios swift

5
推荐指数
1
解决办法
1947
查看次数

当设备方向发生变化时,UIViewController不会更新视图的约束

我正在创建一个可以在横向和纵向模式下使用iPad的应用程序.我的UIViewControllers的配置如下:

我有一个UIViewController具有UICollectionView以下约束的a:top,leading,trailing和bottom设置为0及其superview(superview是UIView我的UIViewController).

当我点击一个细胞,我推另一个UIViewControllerUINavigationController其是所述细胞的细节的viewController.简单.

当我在第一个视图控制器中更改设备方向时,UICollectionView正确设置边界.

这是我的问题:

如果我在中选择一个单元格,UICollectionView则会显示第二个详细信息viewController.然后,如果在第二个ViewController中我改变了设备方向然后我回到第一个viewController,我的视图UIViewController还没有被旋转.我不知道为什么,我尝试了这个没有成功:

self.view.layoutIfNeeded()viewDidAppear()我的firstViewController中根据当前方向更新约束,它不起作用.这没用,因为我注意到一件事:

我的第一个viewController的框架视图仍然与前一个方向相同,它没有改变......但是如果我再次旋转设备,UIViewController检测方向会改变,并且视图边界设置正确.

所以我的问题是:当我在第二个视图控制器中,并且我正在旋转设备,然后我回到前一个视图控制器时,之前的控制器没有检测到我刚刚在第二个视图控制器.

GIF演示:

在此输入图像描述

之后,我从纵向模式旋转到横向模式,视图 不会更改,因为调试视图层次结构工具显示如下:

在此输入图像描述

UIView仍处于肖像,因此UICollectionView约束的无法与新的方向进行更新...

有任何想法吗?

orientation ios autolayout swift

4
推荐指数
1
解决办法
1557
查看次数

模拟器人脸ID快捷方式

我正在使用 Face ID 身份验证。

我经常需要与 中的选项进行交互,Hardware > Enrolled / Matching Face / Non-matching Face但这些操作没有捷径。

有人知道提示或如何向 iOS 模拟器菜单添加快捷方式吗?

谢谢

xcode ios ios-simulator swift

3
推荐指数
1
解决办法
419
查看次数

无法在viewcontrollers中看到storyboard中的元素

我的故事板中的一些元素没有出现,因为我将viewcontroller大小更改为4.7inch.但是,如果我创建另一个viewcontroller并将一些对象放入其中,它们就会出现.这些viewcontrollers有什么问题?

在此输入图像描述

storyboard viewcontroller ios

2
推荐指数
1
解决办法
1600
查看次数

Firebase:使用Firebase令牌的Facebook身份验证不起作用

我正在尝试在我的应用程序中获得有效的Facebook身份验证。

我在这里按照说明进行操作:https : //firebase.google.com/docs/auth/ios/facebook-login

当我单击Facebook登录按钮时,一切工作正常:用户已登录。在facebook登录委托方法中,可以:

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!)
Run Code Online (Sandbox Code Playgroud)

在这种方法中,我必须创建一个Firebase令牌以最终通过Firebase进行身份验证(步骤5)。这就是我要做的:

let credential = FacebookAuthProvider.credential(withAccessToken: 
FBSDKAccessToken.current().tokenString)
            Auth.auth().signIn(with: credential) { (user, error) in
                if let error = error {
                    print(error.localizedDescription)
                    self.errorServer()
                } else {
                    FitUtils.setFitUser(user: user)
                }
            }
Run Code Online (Sandbox Code Playgroud)

问题:我的credential变量不是nil,一切正常,但是当我调用时Auth.auth().signIn(...),该方法将抛出该error变量,并且user是nil。

我没有太多有关该错误的信息:

发生内部错误,请打印并检查错误详细信息以获取更多信息。

error   NSError domain: "FIRAuthErrorDomain" - code: 17999  0x0000604000640630
Run Code Online (Sandbox Code Playgroud)

我怀疑有关Facebook API密钥或Firebase控制台中类似错误,但我已经检查了一切都很好。

任何的想法 ?

编辑

我找到了该错误的明确描述:

UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={
    code = 400;
    errors =     (
                {
            domain = global;
            message …
Run Code Online (Sandbox Code Playgroud)

facebook-graph-api ios firebase swift firebase-authentication

2
推荐指数
1
解决办法
1674
查看次数

NSJSONSerialization使用有效的json返回nil

我尝试解析一个使用NSJSonSerialization返回有效JSON的响应.但它返回nil没有错误.它适用于另一个JSON响应.

我做了一些搜索,这可能是JSON编码的问题.我不知道如何解决它.任何的想法 ?

let url: NSURL = NSURL(string: urlPath)!
        self.searchRequest = NSMutableURLRequest(URL: url)
        if let searchRequest = self.searchRequest {
            searchRequest.HTTPMethod = "GET"
            let authString : String = SNCF.APIKey + ":" + ""
            let authData : NSData = authString.dataUsingEncoding(NSASCIIStringEncoding)!
            let authValue : String = "Basic " + authData.base64EncodedStringWithOptions(.EncodingEndLineWithCarriageReturn)
            searchRequest.setValue(authValue, forHTTPHeaderField: "Authorization")

            let queue:NSOperationQueue = NSOperationQueue()
            NSURLConnection.sendAsynchronousRequest(searchRequest, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in

            do {
//HERE JSONRESULT WILL BE NIL
                if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, …
Run Code Online (Sandbox Code Playgroud)

json ios swift

0
推荐指数
1
解决办法
478
查看次数