小编use*_*436的帖子

从容器视图调用父视图控制器函数

我有一个容器视图,它根据用户的操作在内部执行几个 segue。我还有一个顶级 UIView,我想从容器视图 segue 中控制它并设置它的状态。

我尝试使用协议以及以下方法为家庭控制器设置委托:

 if let parent = self.parent as? HomeController { 
        parent.handleTopBarState(state: .web)
 }
Run Code Online (Sandbox Code Playgroud)

我想要发生的是当我在一个特定的视图控制器上时,设置父视图控制器的顶部栏视图的状态。

谢谢。

ios swift

7
推荐指数
2
解决办法
4056
查看次数

Swift Alamofire + OAuth2 刷新令牌

目前正在学习如何通过 Alamofire 添加 OAuth2 并感到困惑。我正在使用密码授予类型,当请求失败时,我知道重试器启动并请求令牌刷新。令人困惑的部分是我使用哪个?

Alamofire 4 使用 p2/OAuth2

Alamofire RequestRetrier + 请求适配器

第一个使用较少的代码,因此不确定它是否具有我需要的所有功能。我也找不到解释这个过程的具体例子。

我相信以下执行刷新请求?

private func refreshTokens(completion: RefreshCompletion) {
    guard !isRefreshing else { return }

    isRefreshing = true

    let urlString = "\(baseURLString)/oauth2/token"

    let parameters: [String: Any] = [
        "access_token": accessToken,
        "refresh_token": refreshToken,
        "client_id": clientID,
        "grant_type": "refresh_token"
    ]

    sessionManager.request(urlString, withMethod: .post, parameters: parameters, encoding: .json).responseJSON { [weak self] response in
        guard let strongSelf = self else { return }

        if let json = response.result.value as? [String: String] {
            completion(true, json["access_token"], …
Run Code Online (Sandbox Code Playgroud)

ios oauth-2.0 swift alamofire

6
推荐指数
0
解决办法
3167
查看次数

后台任务不调用 Swift 中的类

我有一个后台任务,应该返回一系列课程,然后将其发送到苹果手表。didReceiveMessage我正在通过调用内部任务WatchConnectivity

后台任务需要执行一些操作,例如打开领域数据库、查询结果和访问文档目录,然后将响应返回到课程字典。当手表输出其获取的课程数据时,该逻辑似乎有效。问题是我认为后台任务实际上并没有调用该方法getWatchCourses()

DispatchQueue.global().async {

    var foundCourses = [[String : Any]]()
    let application = UIApplication.shared
    backgroundTask = application.beginBackgroundTask(withName: "app.test.getCourses") {
        let watchModel = WatchCourseModel()
        let courses = watchModel.getWatchCourses()
        print("Courses: \(courses)")
        foundCourses.append(contentsOf: courses)
    }
    replyHandler(["response": foundCourses])
    application.endBackgroundTask(backgroundTask)
    backgroundTask = UIBackgroundTaskInvalid
}
Run Code Online (Sandbox Code Playgroud)

如果结果是硬编码的,这也不起作用getWatchCourses()。应用程序可以在后台执行此逻辑吗?或者它应该工作吗?

还值得指出的是,网上没有任何地方记录了这一点,他们总是指将简单的文本响应发送回手表,而不是处理器密集型的东西:(

谢谢

ios uibackgroundtask swift watchkit

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

迅捷的segue过渡阴影

我正在使用故事板中的一些标准标记,每个标记都有相同的背景色。我遇到的问题是,当segue过渡快要完成时,整个框架周围都会出现像背景这样的深色阴影。

该图显示了过渡

这很微弱,但足以引起问题。有人遇到过吗?

storyboard ios segue swift

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

在 Swift 中的应用程序支持中创建嵌套目录

尝试在应用程序支持中创建嵌套目录,但失败了。我得到的错误信息是"You don’t have permission to save the file 'folder1' in the folder 'testApp'

    let path = getApplicationSupportDirectory()
    let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
    let folder = path.appendingPathComponent("\(appName)/folder1", isDirectory: true)
    print("[ERR]: Folder location: \(folder.relativePath)")
    if !FileManager.default.fileExists(atPath: folder.relativePath) {
        do {
            try FileManager.default.createDirectory(atPath: folder.relativeString, withIntermediateDirectories: true, attributes: nil)
        } catch {
            print("[ERR]: \(error.localizedDescription)")

        }
    }
Run Code Online (Sandbox Code Playgroud)

文件夹位置输出正确的位置,它似乎在“appName”中创建了第一个目录。

file-manager ios swift

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