Tag: swift

有人可以给swift数组中的“append如果不存在”的方法吗?

因为我使用这个例程很多,有人可以创build一个Swift数组的扩展方法,它将检测是否将要附加的数据是否已经存在,然后不附加? 我知道这只是less数几个这样的代码的问题: var arr = [Int]() for element in inputArr { if !arr.contains(element) { arr.append(element); } } 变为: var arr = [Int]() for element in inputArr { arr.appendUnique(element); } 要么: var arr = [String]() for element in inputArr { if !arr.contains(element) { arr.append(element); } } 变为: var arr = [Int]() for element in inputArr { […]

我们如何添加额外的UILabels到UINavigation?

我想添加一个循环视图和标签到UINavigation。 喜欢这个: 我可以通过以下代码为我的UINavigation设置一个标签: if let navigationBar = self.navigationController?.navigationBar { let firstFrame = CGRect(x: 300, y: 0, width: navigationBar.frame.width/2, height: navigationBar.frame.height) let firstLabel = UILabel(frame: firstFrame) firstLabel.text = "First" navigationBar.addSubview(firstLabel) } 但是这个代码有两个问题:1.如何正确设置x位置? (testing我设置了300的值,但是这个值在不同的屏幕尺寸上显示不同的位置)2.如何为这个标签设置循环背景?

MKPointAnnotations的Swift Offset用于不同高度范围的相同位置坐标

我之前遇到过一个问题, 这里已经回答了 。 此外,我还有一个问题,我尝试了一种方法,但失败了。 我需要在地图上显示两个注释,它们具有相同的位置坐标。 数据来自于一项服务,我应用了一个逻辑来为相同纬度的位置增加一个0.0001的偏移量。 ( SO答案 ) 现在,当我放大/缩小时,我正在使用计算高度 let updatedRadius = (mapView.camera.altitude)/1000 //in KM 然后,我有以下保持注释之间的不断偏移(我的意思是,注释在任何缩放级别并排显示) switch updatedRadius { case 0 … 5: allStoresInfo.map { currentStore in allStoresInfo.filter{$0.latLng![0] == currentStore.latLng![0]}.enumerated().forEach{ index, matchingStore in matchingStore.latLng![0] += Double(index)*0.0001 } } case 5 … 10: allStoresInfo.map { currentStore in allStoresInfo.filter{$0.latLng![0] == currentStore.latLng![0]}.enumerated().forEach{ index, matchingStore in matchingStore.latLng![0] += […]

在UIScrollView的滚动过程中启用UITableView滚动

我有一个UITableView里面的UITableView 表视图看起来像: private(set) lazy var tableView: UITableView = { let tableView = UITableView(frame: CGRect.zero, style: .plain) tableView.separatorStyle = .none tableView.showsVerticalScrollIndicator = false tableView.rowHeight = 70 tableView.backgroundColor = .blue tableView.bounces = false tableView.alwaysBounceVertical = false tableView.isScrollEnabled = false return tableView }() 正如你所看到的,我已经禁用了滚动的表格视图,因为我想让它与UIScrollView的其余视图一起滚动。 我想实现的是,当UIScrollView达到一定的偏移量时,启用tableView的滚动,因此我在scrollViewDidScroll委托方法中有: func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView.contentOffset.y >= 160 { self.view.tableView.isScrollEnabled = true […]

未使用结构

我有一个有50多个问题的应用程序。 每个问题都有: 一个问题, 正确答案 三个不正确的答案 图像名称 所以我做了一个结构与这些属性。 一次只有一个问题在屏幕上,所以我开始设置我的问题是这样的: let question1 = structName… (pass question info) let question2 = structName… (pass question 2 info) 但是,这是一个“可变的未使用的”警告。 我做错了什么,我该怎么做呢?

通过其内容dynamic设置UIScrollView和UITableView的高度

我相当新的iOS开发,我一直坚持这一两天 我有一个UITableView和UIImageView里面的UIScrollView , UIImageView是在表顶部和高度是静态的,所以我没有任何问题,这个问题是UITableView ,我需要dynamic获取高度基于内容并将该高度设置为表格的高度约束和scrollview的内容。 细胞是自我大小的,所以细胞的高度根据内容而变化。 到目前为止我所能做到的最好的方式是使用UITableView contentSize.height属性来获取高度,但显然这将返回基于estimatedRowHeight的高度,而不是每行的实际高度。 代码: override func viewDidLoad() { super.viewDidLoad() tableView.dataSource = self tableView.delegate = self tableView.estimatedRowHeight = rowHeight tableView.rowHeight = UITableViewAutomaticDimension tableView.layoutIfNeeded() tableHeight.constant = tableView.contentSize.height scrollView.contentSize.height = imageView.bounds.height + tableView.contentSize.height } 我试过了: 通过使用UITableView contentSize.height属性获取高度,如代码中所示,并在之前进行了解释。 在willDisplayCell上分别获取每行的高度,并将其添加到表格的高度约束和scrollview的contentSize中。 但看起来像这样增加了比实际更多的行,给了我一堆在表的末尾的空单元格。 willDisplayCell的代码: let cellHeight = cell.bounds.height tableHeight.constant += cellHeight scrollView.contentSize.height += cellHeight 和以前一样,除了我在cellForRowAtIndexPath尝试了相同的结果。

将数据从数据中快速parsing出来

我有一个名为“比赛”的parsing类的比赛列表,我需要从该类中抽取比赛列表来填充一个数组来填充UI PickerView。 完成这个最简单的方法是什么? 谢谢。 //用代码编辑 override func viewDidLoad() { super.viewDidLoad() var compQuery = PFQuery(className:"Competitions") compQuery.whereKey("teamID", equalTo:"1") compQuery.findObjectsInBackgroundWithBlock { (competitions: [AnyObject]!, error: NSError!) -> Void in if error == nil { // Do something with the found objects for competition in competitions { NSLog("%@", competition["compName"] as String) self.competitionArray += [competition["compName"] as String] } } else { […]

Parse.com PFUser signUpInBackgroundWithBlock:块在第一次点击时不被调用

我正在开发与Swift和parse.com框架的iOS应用程序,并注册新用户有一个大问题。 虽然新用户正在注册,但是第一次敲击时,“signUpInBackgroundWithBlock”块没有被调用。 当我第二次点击button时,块终于被调用,并且出现错误,用户名已经被注册。 var newUser = PFUser() newUser.username = registerView.nicknameTextField.text.trim() newUser.email = registerView.emailTextField.text newUser.password = registerView.passwordTextField.text newUser.signUpInBackgroundWithBlock { (succeeded: Bool, error: NSError!) -> Void in self.registerCompletionBlock(succeeded, error: error) } 是否有人有同样的问题,并知道这种奇怪的行为的解决scheme? 谢谢! 编辑: 完成块应该调用“registerCompletionBlock()”函数: func registerCompletionBlock(succeeded: Bool, error: NSError!) { if error == nil { let subscriptionStoryboard = UIStoryboard(name: "Subscription", bundle: nil) let viewcontroller: UIViewController = […]

更改UITextView字体w / o删除粗体/下划线/斜体格式

我在iOS应用程序中有一个UITextView,我想让用户随意粗体/斜体/下划线/等,所以我给文本视图上的allowEditingTextAttributes属性设置为true。 不过,我也想让用户改变字体和颜色等东西。 目前,甚至改变UITextView的颜色属性也会重置UITextView的格式(即去除粗体/斜体等)。 有没有办法改变这个不重置格式? 作为参考,我目前正在做这个改变颜色: self.textView.textColor = colorTheUserPicked //a UIColor picked by the user 编辑 :其实,这是我的坏,我也重置文本属性本身的值,当我改变颜色。 删除允许我根据需要更改颜色。 但是,我仍然不能改变字体,甚至没有删除粗体/斜体等字体大小。 我意识到这可能是不可能的,虽然…

带有嵌套Parse查询的GCD

func getPosts(skip: Int){ var query = PFQuery(className: self.parseClassName!) query.includeKey("posted_by") query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in if error == nil && objects != nil { if let objects = objects as? [PFObject] { var requestGroup = dispatch_group_create() for post in objects { dispatch_group_enter(requestGroup) let queryKommentar1 = PFQuery(className:"Comment") queryKommentar1.whereKey("posted_to", equalTo: post) queryKommentar1.limit = 3 […]