MFMessageComposeViewController iOS7 addAttachmentData:typeIdentifier:文件名:不工作

我想在iOS7上将图像附加到彩信上。 我写了下面的代码: MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; messageController.messageComposeDelegate = self; NSData *imgData = [NSData dataWithContentsOfFile:@"blablabla"]; BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image"]; if (didAttachImage) { // Present message view controller on screen [self presentViewController:messageController animated:YES completion:nil]; } else { UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to attach image" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [warningAlert show]; […]

了解UILocalNotification时区

从文档: fireDate中指定的date根据此属性的值进行解释。 如果您指定nil(默认值),则启动date被解释为绝对GMT时间,适用于倒数计时器等情况。 如果将一个有效的NSTimeZone对象分配给此属性,则激活date被解释为在时区发生更改时自动调整的挂钟时间; 适合这种情况的例子是闹钟。 假设我明天格林尼治标准时间的中午(绝对时间)安排当地通知。 我安排在西雅图下午1点(太平洋时间,格林威治标准时间8),然后立即前往芝加哥下午11时(中部时间,格林威治标准时间-6)。 我的设备从太平洋时间调整到中央时间。 请帮助我了解在以下三种情况下我的通知将会发生: UILocalNotification timeZone被设置为零。 UILocalNotification timeZone被设置为GMT。 UILocalNotification timeZone被设置为太平洋时间。

performSelector:withObject:afterDelay:和dispatch_after之间的折衷是什么?

我遇到的唯一的function差异是,我可以取消与performSelector:withObject:afterDelay: 我不知道如何取消提交给dispatch_after的块。 (请让我知道是否有办法做到这一点,我不知道)。 我想知道更多关于: function的权衡(还有什么可以用一个接口而不是其他的?) 性能权衡(一个实现更有效率?在哪些情况下?) 风格权衡(我应该更喜欢一个接口的某些任务,以更好地遵循常见的风格或惯例?)

在容器视图中交换子视图

让ContainerView成为具有两个子内容视图的父容器视图: NavigationView和ContentView 。 我希望能够用另一个视图replaceContentView的控制器。 例如,交换一个主页控制器与新闻页面控制器。 目前,唯一可以这样做的方法是使用委托来告诉ContainerView我要切换视图。 这似乎是一个马虎的方式来做到这一点,因为ContainerViewController将最终有一大堆的所有子视图的特殊代表。 这也需要与具有关于当前在ContentView中的哪个视图的信息的NavigationView进行通信。 例如:如果用户在新闻页面上,导航视图中的导航栏将显示新闻button当前被选中。 问题A:有没有办法在ContentView交换控制器,而无需调用ContainerView本身的委托方法? 我想以编程方式(没有故事板)做到这一点。 问题B:如何在没有委托调用的情况下从NavigationView切换ContentView控制器? 我想以编程方式(没有故事板)做到这一点。

GCD vs performSelectorInBackground / performSelectorOnMainThread

我是ios开发新手。 我有以下问题: 当我们使用GCD(dispatch_group_async,dispatch_async(dispatch_get_main_queue()…)和当我们使用performSelectorInBackground / performSelectorOnMainThread? 这两者有什么不同? 我知道当我们使用performSelectorInBackground时,我们创build一个新的NSThread。 但是当我们使用dispatch_group_async时不一样吗? 因为如果我们创build多个dispatch_group_async,这意味着我们需要在队列中提交多个块。 而这些块可能运行在不同的队列中。 因此,当我们创build多个dispatch_group_async时,是否意味着我们创build了一个新线程? (因为块可能运行在不同的队列中)(我对NSThread和块队列感到困惑……) 谢谢!!

目标C – 按价值传递,并通过参考传递

首先,对于这个简单的问题感到抱歉。 但是我需要了解发生的事情。 我认为输出应该是upper case string 。 但它是上面的UPPER CASE STRING 。 – (void)test { NSString *stringVar = @"UPPER CASE STRING"; [self changeString:stringVar]; NSLog(@"value after changed : %@", stringVar); } – (void)changeString:(NSString*)string { string = [string lowercaseString]; } 发生了什么事以及如何解决这个问题?

UIDatePicker错误? UIControlEventValueChanged达到最小内部

我遇到了一个奇怪的效果,肯定看起来像是iOS7中的一个错误 – 但通常在过去,当我发现我在苹果的API中发现了一个错误时,结果是我自己的误解。 我有一个UIDatePicker与datePickerMode = UIDatePickerModeCountDownTimer和minuteInterval = 5。我初始化持续时间为1小时,并呈现给用户,在那里它显示为两列select器与小时和分钟。 (到现在为止还挺好。) 用户想“20分钟”,所以滚动小时列为0.在这一点上,select器读取0小时和0分钟,和iOS7是不酷,所以它自动滚动分钟轮5.我的UIControlEventValueChanged处理程序被调用,并且countDownDuration读取5分钟。 (还好。) 现在用户抓住分轮,并拖动到20. AND …我的UIControlEventValueChanged处理程序不会被调用。 (坏。) 如果我在UI中有其他事件检查dateselect器在这一点上,我确实看到countDownDuration被设置为20.但我无法知道用户改变它,此刻它被改变。 这是非常可重复的:它始终发生在第一次改变后,select器拒绝设置为0(自动进入5分钟)。 请注意,这是在iOS7; 它不会发生在iOS6(也许是因为select器有完美的内容被设置为0分钟)。 所以…我在这里错过了什么? 或者这是iOS7的一个真正的错误? 而在后一种情况下,有没有人比周期性地检查当前的时间间隔有更好的方法?

点击SWIFT时,将打开和closuresUItableviewcell对勾

我正在做一个tableview 我希望能够点击每个单元格,当点击时,它会在单元格上显示一个复选标记 现在我有一些代码,使这项工作: // checkmarks when tapped func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let section = indexPath.section let numberOfRows = tableView.numberOfRowsInSection(section) for row in 0..<numberOfRows { if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: section)) { cell.accessoryType = row == indexPath.row ? .Checkmark : .None } } } 但是这段代码只select了一个段内的1个单元(我有5个段) 我需要它在任何地方select任何单元格 另外,当我拖动我的屏幕上下,我失去了复选标记 任何帮助将非常感激 viewcontroller.swift class ViewController: […]

UIDatePicker中的最小和最大date

我想从dateselect器中获取最小和最大date,但是最小date应该是当前date的“ – 18”,最大date应该是当前date的“ – 100”。 假设当前是2018年,那么我希望最低date为2000年,最长date为1918年。 我到目前为止所做的是: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:[NSDate date]]; NSInteger year = [components year]; int mindt = year – 18; int maxdt = year -100; // NSDate * MinDate = [components year] – 18; // NSDate * MaxDate = [components year] – 100; // […]

IOS的雪碧套件screengrab?

我试图获得一个SKScene的视图的屏幕抓取。 我正在使用的技术是: UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 这对于普通的UIViews来说效果很好,但是无论如何它忽略了SKScene中的所有精灵。 我不确定这是否是一个错误,或者Sprite Kit的渲染是否与UIGraphics分离。 问题:如何在使用UIViews的方式看起来不适用于Sprite Kit,或者有人使用Sprite Kit使用UIGraphics上下文时,如何获得SKScene的屏幕截图?