Questions tagged «objective-c»

仅在有关Objective-C功能或取决于语言代码的问题上使用此标记。标签[cocoa]和[cocoa-touch]应该用于询问Apple的框架或类。使用相关标签[ios],[macos],[apple-watch]和[tvos]来解决特定于这些平台的问题。

11
从当前日期减去7天
看来我无法从当前日期减去7天。这就是我的做法: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setDay:-7]; NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0]; SevenDaysAgo的值与当前日期相同。 请帮忙。 编辑:在我的代码中,我忘记了用正确的日期替换获取当前日期的变量。因此上面的代码是功能正常的。
117 objective-c  ios  nsdate 


7
UIActionSheet取消按钮异常行为
我有一个UIBarButtonItem,它打开一个操作表来为用户提供有关操作的选择。除非我尝试单击“取消”按钮,否则一切都会按预期进行。该按钮的目标似乎已经从其应有的位置向上移动。我只能通过单击“取消”和“确定”按钮中间的某个位置来激活它。 我已经在其他应用程序中尝试过操作表,它们可以很好地工作,所以这不仅仅是我的经验。操作表正在UIViewController中打开 - (void)showOpenOptions { UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application") delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel") destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link") otherButtonTitles:nil]; [sheet showInView:self.view]; [sheet release]; }


10
将NSTextAttachment图像居中于单行UILabel的旁边
我想将NSTextAttachment图像附加到属性字符串中,并使其垂直居中。 我使用以下代码创建我的字符串: NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:DDLocalizedString(@"title.upcomingHotspots") attributes:attrs]; NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = [[UIImage imageNamed:@"help.png"] imageScaledToFitSize:CGSizeMake(14.f, 14.f)]; cell.textLabel.attributedText = [str copy]; 但是,图像似乎与单元格的顶部对齐textLabel。 如何更改绘制附件的矩形?

10
使用`textField:shouldChangeCharactersInRange:`,如何获取包含当前键入字符的文本?
我正在使用下面的代码尝试使用户输入的textField2内容更新为匹配。textField1textField1 - (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string { if (theTextField == textField1){ [textField2 setText:[textField1 text]]; } } 但是,我观察到的输出是... 当textField1为“ 123”时,textField2为“ 12” 当textField1为“ 1234”时,textField2为“ 123” ...当我想要的是: 当textField1为“ 123”时,textField2为“ 123” 当textField1为“ 1234”时,textField2为“ 1234” 我究竟做错了什么?

2
NSLog以重写的描述方法记录对象的内存地址
我覆盖了对象的描述方法。我需要知道如何打印对象的内存地址以替换以下代码中的{???}: -(NSString *) description { return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@", {???}, self.parameterOne, self.paramterTwo]; } 我希望它在控制台中像这样打印: <SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
116 objective-c  nslog 


13
消除呈现的视图控制器
我有一个理论上的问题。现在,©正在阅读Apple的ViewController指南。 他们写: 当需要解散呈现的视图控制器时,首选方法是让呈现的视图控制器将其解雇。换句话说,只要有可能,呈现视图控制器的同一视图控制器也应负责解散它。尽管有多种技术可以通知呈现视图控制器其呈现的视图控制器应被取消,但首选技术是委派。 但是我无法解释,为什么我必须在演示的VC中创建一个协议并添加委托变量,在演示的VC中创建委托方法以消除演示的VC,而不是在演示的视图控制器方法中进行简单的调用 [self dismissViewControllerAnimated:NO completion:nil]? 为什么首选更好?苹果为什么推荐它?

4
取消排队的performSelector:afterDelay调用
有没有人知道在调用时是否可以从事件堆栈或计时器堆栈(或API使用的任何机制)中取消已排队的选择器事件performSelector:withObject:afterDelay? 我正在使用此事件堆栈来更改TabBar选项卡中图像的属性,有时在一次快速执行的循环中可能需要排队长达10秒钟的更改,价值可能长达10秒钟……大约5毫秒左右。 如果用户切换选项卡,就会出现问题...就像说我让启用了选项卡#4的图像更改排队等待显示的图像,然后用户迅速切换到选项卡#3,然后又回到选项卡#4 ...这会在旧队列仍在播放时重新排入10秒钟的变更队列,如果切换得足够快的话,可能会排入队列约2或3秒钟...但甚至到达5秒钟流是个问题。 所以我需要一些方法来取消旧的更改堆栈,然后再放上新的堆栈... 我用过去时来编写此查询,因为我已经通过在播放功能上添加鹰眼事件过滤器来解决此问题,并提出了另一种解决方案。但是我仍然对是否可以取消事件感到好奇,因为我感觉这种知识将来会派上用场。感谢您提供的任何帮助:)

19
允许与另一个UIView下的UIView交互
有没有一种简单的方法可以允许与另一个UIView下的UIView中的按钮进行交互-在该UIView的顶部没有真正的对象,而是位于按钮顶部? 例如,目前我有一个UIView(A),在屏幕的顶部是一个对象,在屏幕的底部是一个对象,中间没有任何对象。它位于另一个UIView的顶部,中间有按钮(B)。但是,我似乎无法与B中间的按钮进行交互。 我可以看到B中的按钮-我已经将A的背景设置为clearColor-但是B中的按钮似乎没有接收到触摸,尽管这些按钮之上实际上没有来自A的对象。 编辑 -我仍然希望能够与顶部UIView中的对象进行交互 当然有一个简单的方法可以做到这一点吗?

30
UITableViewCell子类“执行-layoutSubviews之后仍需要自动布局”
使用XCode 4.5和iOS 6,我正在开发带有带有自定义单元格的简单表格视图的应用程序。我已经在iOS 5及更低版本中完成了一百次,但是由于某种原因,新的autoLayout系统给我带来了很多麻烦。 我在IB中设置了表格视图和原型单元,添加了子视图并将其连接为IBOutlets,然后设置了我的委托和数据源。但是现在,无论何时从中获取第一个单元格cellForRowAtIndexPath,我都会遇到以下错误: ***-[[ShopCell layoutSublayersOfLayer:],/ SourceCache / UIKit_Sim / UIKit-2372 / UIView.m:5776中的断言失败 ***由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“执行-layoutSubviews之后仍需要自动布局。ShopCell的-layoutSubviews实现需要调用超级。” 我尚未在我的子类化单元(ShopCell)中实现-layoutSubviews方法,即使我尝试这样做并添加超级调用也是如此,因为这表明我仍然遇到相同的错误。如果我从IB的单元格中删除子视图,然后将其更改为标准的UITableViewCell,则一切都会按预期进行,尽管我的单元格中当然没有数据。 我几乎可以肯定,我缺少一些简单的东西,但是找不到任何文档或指南来建议我做错了什么。任何帮助,将不胜感激。 编辑:只是尝试将其更改为IB中的UITableViewCell,并将所有子视图保留在原处,仍然是相同的错误。

2
NSObject + load和+ initialize-它们做什么?
我有兴趣了解导致开发人员覆盖+ initialize或+ load的情况。文档清楚地表明,Objective-C运行时会为您调用这些方法,但是从这些方法的文档中确实可以看出所有这些。:-) 我的好奇心来自查看苹果的示例代码-MVCNetworking。他们的模型类有一个+(void) applicationStartup方法。它在文件系统上做一些内务处理,读取NSDefaults等等,等等,并且在尝试使用NSObject的类方法后,似乎可以将这项工作放到+ load中。 我确实修改了MVCNetworking项目,删除了App Delegate中对+ applicationStartup的调用,并将整理位放入+ load ...我的计算机没有着火,但这并不意味着它是正确的!我希望对您必须调用+ load或+ initialize的自定义安装方法周围的任何细微之处,陷阱和注意事项有所了解。 对于+ load文档说: 加载消息将发送到动态加载和静态链接的类和类别,但前提是新加载的类或类别实现了可以响应的方法。 如果您不知道所有单词的确切含义,那么这句话很笨拙且难以解析。救命! “动态加载和静态链接两者”是什么意思?是否可以动态加载和静态链接某些东西,或者它们是互斥的? “ ...新加载的类或类别实现了可以响应的方法”什么方法?反应如何? 至于+ initialize,文档说: 初始化它,每个类仅调用一次。如果要对类和类的类别执行独立的初始化,则应实现load方法。 我的意思是,“如果您要设置类...请不要使用初始化”。好的。什么时候或为什么要覆盖初始化?


16
UICollectionView当前可见的单元格索引
我UICollectionView第一次在iPad应用程序中使用。我已设置UICollectionView其大小和单元格大小相同,这意味着一次只能显示一次单元格。 问题: 现在,当用户滚动UICollectionView时,我需要知道哪个单元格可见,我必须在更改时更新其他UI元素。我没有为此找到任何委托方法。我该如何实现? 码: [self.mainImageCollection setTag:MAIN_IMAGE_COLLECTION_VIEW]; [self.mainImageCollection registerClass:[InspirationMainImageCollectionCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; [self.mainImageFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; [self.mainImageFlowLayout setMinimumInteritemSpacing:0.0f]; [self.mainImageFlowLayout setMinimumLineSpacing:0.0f]; self.mainImageFlowLayout.minimumLineSpacing = 0; [self.mainImageCollection setPagingEnabled:YES]; [self.mainImageCollection setShowsHorizontalScrollIndicator:NO]; [self.mainImageCollection setCollectionViewLayout:self.mainImageFlowLayout]; 我尝试过的 至于UICollectionView个符合UIScrollView,我当用户滚动两端UIScrollViewDelegate方法 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 但是在上面的函数中,如何获取当前可见的单元格索引UICollectionView?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.