Tag: swift

访问XCTestCase类中的应用程序委托对象导致misaligned_stack_error_ swift

我正在尝试在swift中进行unit testing。 我定义了我的testing用例类,如下所示: import XCTest import CoreData import UIKit class LazyLoadingCheckTests: XCTestCase { var appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. […]

一旦下一个视图控制器模态出现,就closures或删除先前的模态控制视图控制器

我的目标包括很多视图需要基于每个用户操作呈现不同的视图模式。 在这里我想要做的是获得更干净的视图层次结构和更好的用户体验。 根视图控制器模态地呈现第一视图控制器 当我点击第一个视图控制器上的button时,第二个视图控制器出现在模态上。 一旦第二个视图控制器确实出现,我想消除或从视图层次结构中删除第一个。 我可以这样做吗? 如果是这样 ,我该怎么做呢? 如果没有 ,解决这个问题的正确方法是什么,因为我将在每个视图上呈现许多模态提供的视图控制器。 我认为,即使我想解散当前的观点,当前一个解散的时候,前一个仍然会出现。 更新: VC1(根)> VC2(模态地存在)> VC3(它在 VC2上模态存在) 当我解雇VC3 , VC2仍在观看记忆中。 所以,我不想在我解雇VC3出现VC2 ,而是想通过从视图层次结构中删除或解散VC2来查看VC1 。 WANT :在图像上,当我解开蓝色的时候,我不想看到我的视觉记忆中的粉红色,并且我想在蓝色眼睛出现的时候立即将其删除。 这就是我想要做的。 任何帮助?谢谢。

iOS模拟器突然停止工作,“iOS模拟器无法启动”,没有其他消息

当我点击运行在Xcode,这是popup的消息,但它的工作前几天…我试图重置模拟器设置,但是什么也没做。 我已经读过iOS模拟器在El Capitain上不起作用,但是这并不能解释它为什么在几天前工作,然后随机停止工作。

为什么我的时间UILabels从暂停状态恢复播放时跳过2秒?

我有一个奇怪的问题使用MPMoviePlayerController 。 我有一个currentTimeLabel表示当前的播放时间, endTimeLabel表示剩余的播放时间。 使用NSTimer每1秒就会触发更新标签的function。 这与video播放时UISlider增加的UISlider一致。 但是,问题是,随着video播放,我点击暂停button,当我再次点击播放button时,我的currentTimeLabel和endTimeLabel从上次停止的地方跳过2秒。 以下是提供的代码: override func viewDidLoad() { super.viewDidLoad() print("viewDidLoad") NSNotificationCenter.defaultCenter().addObserver( self, selector: "moviePlayerPlaybackStateDidChangeNotification:", name: MPMoviePlayerPlaybackStateDidChangeNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver( self, selector: "moviePlayerLoadStateDidChangeNotification:", name: MPMoviePlayerLoadStateDidChangeNotification, object: nil) setUpVideoPlayer() isPlaybackSliderTouched = false isPauseButtonTouched = false } override func viewDidAppear(animated: Bool) { super.viewDidAppear(true) print("viewDidAppear") timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updatePlaybackSlider", userInfo: nil, repeats: […]

从我的主应用程序Swift中打开另一个(我的)应用程序

我有两个应用程序,我想从彼此打开它们(如Facebook的打开信使)。 经过一番search,我发现我必须知道我的应用程序的urlscheme,但我不知道我怎么能声明它。 在我的urlSchemes只是Facebook的计划。 var url = NSURL(string: "") UIApplication.sharedApplication().canOpenURL(url!) 我发现代码,据我所知,我必须把我的urlScheme的url。 任何帮助?

UITabBar在顶部或其他?

我是新来的swift,将创build一个用户界面,其中显示一个tabor,当我通过苹果的人机界面的指导方针 ,他们说,不使用UITabBar顶部。 我们可以通过自定义来使用它,但是很多人在App Store中提交时会被拒绝。 所以,而不是UITabar应该使用顶部的标签?

CAGradient图层在视图中不可见

我尝试在我用Core Graphics制作的饼图中添加Cagradient效果。 事实certificate,我不能够,当然不能很好地理解如何将它应用到CGPath的一部分的视图… override func draw(_ rect: CGRect) { … func arc(myRadius: CGFloat, myStartAngle: CGFloat, myEndAngle: CGFloat) { // This is the pie chart segment context?.setFillColor(phenotypeColor.cgColor) context?.move(to: center) context?.addArc(center: center, radius: finalRadius, startAngle: myStartAngle, endAngle: myEndAngle, clockwise: true) context?.fillPath() (…) let gradientLayer = CAGradientLayer() gradientLayer.frame = self.bounds gradientLayer.colors = [UIColor.red, UIColor.blue] self.layer.addSublayer(gradientLayer) } 我没有看到屏幕上的任何渐变(只有白色的背景…)。 最后,我还试图在保存状态后clip上下文,但我不确定是否剪辑了任何东西,因为我没有看到任何渐变(无论是在整个视图还是在片段上)。 […]

如何将数据传递给视图控制器并在将其推送到导航堆栈之前加载它?

我有一个视图控制器与集合视图,当我单击一个单元格时,我将一个variables传递给另一个视图控制器,然后将其推到导航堆栈上。 func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("nextVC", sender: self.userArray[indexPath.row]) } 这是我如何发送variables: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { super.prepareForSegue(segue, sender: sender) let nextVC = segue.destinationViewController as! NextVC if let senderId = sender!.objectForKey("uId") { nextVC.userId = senderId as! String } } 下一个视图控制器(nextVC)有很多东西在上面。 我尽我所能去优化它,但是加载所有的东西还是需要一些时间的。 有没有一种方法可以为segue做准备,传递variables,让下一个vc做它的事情,然后当它完成加载,实际上继续它? (或显示它)? 我看到其他一些讨论预加载视图控制器的问题,但是没有一个涉及传递variables。 这个variables非常重要,因为下一个VC中的所有东西都必须知道这个variables(基于被触摸的单元格),否则将无法加载。 我希望我解释得很好,谢谢你的时间。

Swift 3 – UTC到前一刻标签,思考12h / 24h设备时间的变化

我想将timeUTC转换为“5s前”。 前面的标签也在想着12h / 24h的变化。 因为崩溃。 现在下面的代码返回标签值行我想在游乐场。 但不是在我的ios项目。 它不会进入If块。 我错过了什么或者有什么问题? let dateStringUTC = "2016-10-22 12:37:48 +0000" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ" if let from = dateFormatter.date(from: dateStringUTC) { dateFormatter.dateFormat = "MMM d, yyyy h:mm:ss a" let stringFromDate = dateFormatter.string(from: from) let dateLast = dateFormatter.date(from: stringFromDate) let now = Date() let components: NSCalendar.Unit […]

Swift – 自定义SearchController和SearchBar

我试图重新创build在雅虎财经应用程序中看到的search字段。 我跟着一个在线教程来定制UISearchBar和UISearchController,但是我仍然有一些问题。 如果你们中的任何一个人能够打开我的项目,看看哪里出了问题,哪里需要添加这些线路,哪怕这些线路真的很棒。 我的尝试解决scheme项目可以在这里find: https : //github.com/jordanw421/yahoofinance 1)如何让查询出现的时候,search栏处于激活状态(文本向左​​,input指示灯闪烁)? 在下面的链接中,您可以看到我在说什么,当button被按下时,search视图被加载,search栏立即被激活。 我试过使用: customSearchController.definesPresentationContext = true customSearchController.isActive = true customSearchController.searchBar.becomeFirstResponder() 但是这并没有奏效。 我应该在prepareForSegue的初始视图控制器中设置这些吗? 2)如何设置键盘外观(黑暗),并添加一个button的键盘工具栏? 我能够得到这个工作非自定义search栏,但出于某种原因,这些现在不工作: customSearchController.searchBar.keyboardAppearance = .dark 和 func addKeyboardButton() { let keyboardToolbar = UIToolbar() keyboardToolbar.sizeToFit() keyboardToolbar.isTranslucent = false keyboardToolbar.barTintColor = UIColor.blue let addButton = UIButton(type: .custom) addButton.frame = CGRect(x: keyboardToolbar.frame.size.width / 2, y: keyboardToolbar.frame.size.height / 2, width: […]