Tag: cocoa touch

从NSNumber获取CGFloat的最常见和最正确的做法是什么?

我的工作代码是这样的: NSNumber *n = @42.42; CGFloat cgf = 0; CFNumberRef cfn = CFBridgingRetain(n); CFNumberGetValue(cfn, kCFNumberCGFloatType, &cgf); CFRelease(cfn); 也可以有 CGFloat cgf = (CGFLOAT_IS_DOUBLE) ? [n doubleValue] : [n floatValue]; 但是这对我来说更是丑陋。 在我看来,做这样一个共同的事情应该有更好的API。 有没有?

MKAnnotationView缓冲其input队列?

我想根据它们表示的相对时间在UIMapView中显示不同的颜色引脚 但似乎mapView:viewForAnnotation:方法只是它独立于被调用的东西。 在我的代码示例中,我已经从文件中检索到较早和较新的位置self.fileArray。 该数组拥有称为调查结果的对象(其中包括)年龄属性。 最新的研究结果在年龄@“0”开始,每次数组重新加载准备采取新的发现,他们分别进入@“1”和@“2”,然后丢弃。 一旦他们承担了他们的新时代属性,他们被发送到mapView:viewForAnnotation:方法显示根据他们的新状态,当我遍历fileArray 实际的问题是跳后。 很多有趣的其他答案在提出这个问题的时候出现了,但没有一个适用于我的案例 . . int size = [self.fileArray count]; for (int idx=(size-1); idx>0; idx–) // process backwards { annotationFlag = 0; // using a global just for now self.finding = self.fileArray[idx]; if ([self.finding.age isEqualToString:@"2"]) { [self.fileArray removeObjectAtIndex:idx]; } if ([self.finding.age isEqualToString:@"1"]) { self.finding.age = @"2"; [self.fileArray replaceObjectAtIndex:idx withObject:self.finding]; annotationFlag […]

没有新的初始化使用类的数据

我有一个TabBar布局,并在主页选项卡,我有一个button“连接”,当按下时发送一个动作到类TransferViewController创build一个GameKit会话。 然后我有另一个选项卡发送,其中有一个button,说“发送文件”,当按下时发送一个动作到类TransferViewController也使用“会话”variables设置使用连接发送文件,但由于它是一个不同的选项卡它创build一个新的控制器实例,它希望我再次连接,但button是在主页选项卡上。 有无论如何,我可以有一个控制器的两个标签没有两个实例? 我希望用户单击主页选项卡上的连接,然后切换到发送选项卡,然后按发送文件并使用另一个选项卡上的连接设置variables。 我很抱歉,如果这是混乱。

在使用故事板的同时划分UIWindow

我有同样的问题在这个问题中解释: 我在哪里可以更改窗口我的应用程序使用从UIWindow到我自己的子类“MyWindow”故事板? 我的问题是我如何在我的应用程序委托,返回“MyWindow”子类实现“窗口”getter方法? 或者也许有其他的方法来分配我的子类到我的应用程序的主窗口?

Map上的多个位置(使用MKMapItem和CLGeocoder)

我试图在MKMapItem显示多个位置。 我从CLGeocoder获取这些位置,不幸的是它只接受一个位置。 即使我通过一个NSArray它只是返回一个位置。 以下工作适用于单个位置,但不适用于多个位置。 我怎样才能对多个地点进行地理编码? Class mapItemClass = [MKMapItem class]; if (mapItemClass && [mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) { NSArray *addresses = @[@"Mumbai",@"Delhi","Banglore"]; CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:@[addresses] completionHandler:^(NSArray *placemarks, NSError *error) { CLPlacemark *geocodedPlacemark = [placemarks objectAtIndex:0]; MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:geocodedPlacemark.location.coordinate addressDictionary:geocodedPlacemark.addressDictionary]; MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark]; [mapItem setName:geocodedPlacemark.name]; [MKMapItem openMapsWithItems:@[mapItem] […]

以编程方式同时消除UINavigation视图和Modal视图

我已经在这个网站上尝试了一些答案,但他们都没有涉及到我的问题 我有一个MasterDetail应用程序,它有两种types的segues,我正在使用。 当您按下详细视图上的button时,它会使用推入区域并将另一个详细视图推送到该视图上。 在新的detailview中(刚刚推出的那个),有一个button使用模态segue调用另一个UIView(表单)。 我想要做的是当用户select一行时,UIAlertView将显示一条消息,而同时(不必在同一时间)它将closuresUIViewcontroller(模态)并返回从推送的ViewController。 基本上,我需要能够closures所有视图控制器,一个模式和一个推(导航),使视图返回到他们开始的原始主屏幕。 我有UIAlertView工作正常,我可以通过使用[self.dismissViewControllerAnimated:YES completion:nil];来取消模态viewcontroller [self.dismissViewControllerAnimated:YES completion:nil]; 但我不知道如何解散下一个ViewController(它在导航控制器中)。 使用这个: [self.navigationController popToRootViewControllerAnimated:NO]; 不起作用。 这里是我想调用函数来删除所有视图的地方: – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlWithIDAndChallenge]; NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; UIAlertView *message = [[UIAlertView alloc] initWithTitle@"Started" message:@"The challenge has begun!" delegate:nil cancelButtonTitle:@"OK!" otherButtonTitles:nil]; [message show] //right here is where I […]

iOS:如何知道某个媒体资源是否符合KVO标准?

在“ 键值观察编程指南”中 , 键值观察注册部分表示:“如果按照文档logging,则Apple提供的框架中的典型属性只有KVO兼容”。 但是,我没有发现文档中logging为符合KVO的任何属性。 你能指点我一些吗? 具体来说,我想知道UIWindow @property(nonatomic,retain) UIViewController *rootViewController是否符合KVO。 原因是我将rootViewController属性添加到UIWindow for iOS <4,并想知道是否应该使其符合KVO。 @interface UIWindow (Additions) #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0 @property (nonatomic, retain) UIViewController *rootViewController; #endif; @end @implementation UIWindow (Additions) #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0 @dynamic rootViewController; – (void)setRootViewController:(UIViewController *)newRootViewController { if (newRootViewController != _rootViewController) { // Remove old views before adding the new one. […]

IOS SDK:初学者的build议

我经常回答关于内存pipe理,UITableView,接口方向,MVC等基本主题的同类问题。 我非常理解,从SDK开始的每个人都很乐意接受它,但是一点点阅读能够帮助他们节省数小时的debugging时间,以及“我们在这里错过一些东西”的感觉带来的挫折感。 我希望有经验的用户分享一些小文章,白皮书,文档,书籍章节,以帮助他人节省时间和避免挫折。 我的第一票将是: IOS内存pipe理指南 视图控制器编程指南 表视图指南 作为一般性build议,请阅读参考资料库中每个课程的文档概述部分 ,其中包含大部分您需要了解的信息,以避免陷阱!

是否有可能在运行时检测到您的iOS应用程序在iPad mini上运行?

在运行时检测不同的硬件对于分析是有用的(除此之外,更有疑问的目的)。 许多iOS应用程序创build者可能有兴趣知道有多less用户在iPad mini上体验他们的应用程序(而不是仅仅知道有多less用户在1024×768屏幕分辨率的iPad上体验他们的应用程序 – 这也将是有趣的)。 Cocoa touch/UIKit/ObjC/C是否有公开的API可用于检测您的iOS应用程序在运行时是否在iPad mini上运行? 理想情况下,这种方法应该区分iPad 2和iPad mini(具有相同的像素数量,但不同的像素密度)。 发布脚本:我意识到很多人会考虑在运行时检测iPad mini是一个坏主意。 不过,我认为这是一个有确定答案的有效问题。 我认为这对社区是有用的。

RestKit:如何发布一个对象数组?

问题摘要: 考虑一个与KVC兼容的类SyncObject ,例如: time , someValue , lastChange , uuid 。 考虑只包含SyncObject实例的NSArray 。 我需要将数组作为JSON数组提交给服务器。 如何使用RestKit使用HTTP POST将这个数组提交给服务器? 示例数组: [ { "time": "14:45 10/21/2011", "someValue": "15", "lastChange": "14:45 10/21/2011", "uuid": "0b07c510-f4c8-11e0-be50-0800200c9a66" }, { "time": "14:50 10/21/2011", "someValue": "62", "lastChange": "14:51 10/21/2011", "uuid": "1a6d4480-f4c8-11e0-be50-0800200c9a66" } ] 细节 我有一个对象的数组,我需要作为JSON的服务器。 在我看来,RestKit是这样做的最简单的方法:我试图避免将对象转换成一组NSDictionary对象,然后使用一些JSON编码器来获取我可以POST到服务器的JSON。 所以,创build了数组,并设置了存储在数组中的对象类的映射,我自然会尝试POST到服务器。 RKObjectManager* mgr = [RKObjectManager objectManagerWithBaseURL:@"http://localhost/someweb/api/"]; mgr.serializationMIMEType = RKMIMETypeFormURLEncoded; […]