Tag: swift

当分支链接被点击并打开我的应用程序时,如何访问元数据…?

这是我如何准备和分享给用户的分支链接: let branch = BranchUniversalObject(canonicalIdentifier: UUID().uuidString) branch.title = self.territory.name branch.metadata = self.territory.dictionary let properties = BranchLinkProperties() properties.controlParams = self.territory.dictionary branch.getShortUrl(with: properties) { string, error in if let string = string, let url = URL(string: string) { let controller = UIActivityViewController.controller(activityItem: url, from: sender, traitCollection: self.traitCollection) alert.dismiss(animated: true) self.present(controller, animated: true) } } 然后,我想访问我传递给该链接的参数,但我不知道如何…任何帮助?

在不加载视图的情况下接收通知

正如我在这个问题中解释的,我试图将数据从一个TableView中的UISwitch传递到另一个ViewController。 但是,我希望在设置视图(包含UISwitch)被解散时传递数据。 在这个伟大的答案的第三个步骤之后,我使用UserDefaults来传递数据,并尝试使用NotificationCenter来更新UserDefaults值,当解散设置视图。 要更新用户默认值更改时,您可以让您的设置控制器解雇时发布通知。 然后,您应用中的其他VC可以侦听此通知并根据需要进行更新。 我已经尝试检索viewDidLoad内的通知,但值不会刷新,因为解散设置视图不会每次加载新的ViewController。 每次设置视图被解除时,我怎样才能接收/阅读通知? 更确切地说,我在哪里以及如何编写阅读通知的代码? 以下是发布通知的代码: class SettingsViewController: UIViewController { @IBAction func doneButton(_ sender: UIButton) { self.dismiss(animated: true, completion: nil) NotificationCenter.default.post(name: Notification.Name("nSound"), object: nil) } 以下是检索通知的代码: class ViewController: UIViewController { @IBOutlet weak var testLabel: UILabel! var savedValue = UserDefaults.standard.bool(forKey: "sound") override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(ViewController.viewDidLoad), name: Notification.Name("nSound"), object: nil) […]

在解散视图的同时传递数据

我正在一个应用程序与两个不同的意见,可以模态地呈现一个“设置”viewController与embedded在其中的tableView。 为了将数据从embedded的tableView传递给前两个视图,我将不得不在每个视图转换中使用prepareForSegue(以我的理解)。 但是,当我在“设置”视图中点击“完成”时,我想回到之前的视图。 为了做到这一点,就我所知,人们不得不放弃这个观点。 可否将数据从一个视图传递到另一个视图? 如果没有,这将如何完成? 注意:随时纠正我,我还在开始应用程序开发,我说的一些事情可能是完全错误的。

使用UIWebView共享WKWebView Cookie

我试图与UIWebView分享WKWebViewcookies获取所有的Cookie。 我知道从UIWebView获取所有的cookie比较简单,比较WKWebView。 我在选项卡式应用程序模板中创build了两个WebView(WKWebView,UIWebView)。 下面的方法,我用于与UIWebView共享WKWebViewcookies,但没有得到成功。 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { let response = navigationResponse.response as? HTTPURLResponse let cookies = HTTPCookie.cookies(withResponseHeaderFields: response?.allHeaderFields as! [String : String], for: (response?.url)!) HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always for cookie in cookies { HTTPCookieStorage.shared.setCookie(cookie) } decisionHandler(WKNavigationResponsePolicy.allow); } 使用上面的代码,当我login到我的帐户从WKWebView,UiWe​​bView没有login我已经。 我也试图与WKWebView共享UIWebViewcookies,它的工作。 请谁能告诉我如何可以与UIWebView共享WKWebView Cookie或如何从WKWebView中获取所有的cookie? 谢谢

使用RxSwift重新载入Tableview

我正在使用RxSwift进行tableview。 每次从api获取数据后,我都需要重新载入表格,但是我没有做到这一点。 我找不到任何解决scheme。 任何人都可以帮忙吗? 我有一个从Api的响应获得的地方数组。我已经使用这个代码在视图中加载,但是当数组更新时不会调用它。

为什么`在date不同的时间里,(date:.day,in:.era,for:date)给出相同的结果?

考虑下面的代码: import UIKit let date = Date() guard let nycTimeZone = TimeZone(abbreviation: "EST"), let nzTimeZone = TimeZone(abbreviation: "NZDT") else { fatalError() } var nycCalendar = Calendar(identifier: .gregorian) nycCalendar.timeZone = nycTimeZone var nzCalendar = Calendar(identifier: .gregorian) nzCalendar.timeZone = nzTimeZone let now = Date() let nycDayOfEra = nycCalendar.ordinality(of: .day, in: .era, for: now) let nycDayOfYear = nycCalendar.ordinality(of: […]

无法在animation期间将mainview旁边的子视图最小化

我有两个视图,videoView(它是mainView)和subVideoView(它是mainView的子视图)。 我正在试图同时使用animation同时最小化两个视图,如下面的代码所示。 我能够最小化videoView(即mainView)而不是subVideoView。 但是,当我隐藏代码以最小化videoView(即mainView)时,我能够最小化subVideoView。 我相信它必须以我的animation方式做一些事情。 有人可以请教,我怎样才能最大限度地减less这两个意见(成比例)同时animation,结果与下面的结果。 已有的代码结果 func minimiseOrMaximiseViews(animationType: String){ UIView.animate(withDuration: 0.5, delay: 0, options: [], animations: { [unowned self] in switch animationType { case "minimiseView" : // Minimising subVideoView self.subVideoView.frame = CGRect(x: self.mainScreenWidth – self.minSubVideoViewWidth – self.padding, y: self.mainScreenHeight – self.minSubVideoViewHeight – self.padding, width: self.minSubVideoViewWidth, height: self.minSubVideoViewHeight) // Minimising self ie videoView self.frame = […]

如何修改UITableview的最后一个单元格中button的尾部空格?

我想要我的UITableView的最后一个单元格分隔符采取全长(我的表有20行) 我用这个代码: if indexPath.row == 19 { cell.separatorInset = UIEdgeInsetsZero cell.layoutMargins = UIEdgeInsetsZero cell.preservesSuperviewLayoutMargins = false } else { cell.preservesSuperviewLayoutMargins = true } 我得到了预期的结果,有一点小故障。 基本上,我在每个单元格的右侧有一个button,当我使用上面的解决scheme时,最后一个单元格中的button向左移动了一点点(我假设线条移动后,button也移动了)。 所以现在所有的button都是alignment的,除了修改的最后一个单元中的最后一个button。 题: 有没有办法修改最后一个单元格中button的尾部空格?

将褪色较暗的背景设置为UINavigationBar

我试图设置一个褪色较暗的背景导航栏,你可以看到下面的图片。 我已经试过这个代码,但它不是我所期望的。 UINavigationBar.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4) 我发现这个话题,但没有合适的答案: 通过UISplitViewController的iOS 7导航栏显示褪色的灰色视图 任何想法将不胜感激。 编辑2015年10月6日:如果有人需要知道如何执行 对于Swift用户: – 特别是viewcontroller:我使用: self.navigationController!.navigationBar.setBackgroundImage(UIImage(named: "fadedimage.png"), forBarMetrics: .Default) 在主NavigationController(应用到所有navigationBar)我使用: UINavigationBar.appearance().setBackgroundImage(UIImage(named: "fadedimage.png"), forBarMetrics: .Default)

将3种不同的信息加载到3种不同types的细胞

我在tableViewController中有三种不同types的单元格。 我得到哪种types的单元格和一个来自不同类的项目的objectId。 然后我去cellForRowAt方法中的每个单元格,并加载任何数据。 这种方法导致我有两个问题:1)单元格之一的dynamic高度不起作用,因为标签的文本直到单元格制成之后才被find。 2)所有的细胞有一个“跳动”(我可以看到填充的行,因为我向下滚动,我猜是因为它加载每个滚动的内容)当我向下滚动tableview。 所以我想预先加载所有的数据,并把它放在cellForRowAt而不是在cellForRowAt中search数据。 这将解决这两个问题,但我不知道如何做到这一点。 基于我的编码知识,我会放置在数组中的每个单元格中的信息,然后相应地填充单元格,但我不知道如何使用3个不同的单元格时这样做,因为将信息放入数组I将需要使用indexPath.row ; 我不能这样做,因为我加载3种不同types的数据,并将其添加到不同的数组,所以indexPaths将不会正确alignment。 这是我能想到这样做的唯一方式,这是错误的。 我该如何解决这个问题? 我已经在底部复制了我的代码,以便您可以了解我现在如何加载单元格,也许您可​​以了解如何解决我的问题: func loadNews() { //start finding followers let followQuery = PFQuery(className: "Follow") followQuery.whereKey("follower", equalTo: PFUser.current()?.objectId! ?? String()) followQuery.findObjectsInBackground { (objects, error) in if error == nil { //clean followArray self.followArray.removeAll(keepingCapacity: false) //find users we are following for object in objects!{ self.followArray.append(object.object(forKey: "following") as! […]