Questions tagged «objective-c»

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

21
将Objective-C Typedef转换为其等效字符串
假设我在.h文件中声明了typedef,如下所示: typedef enum { JSON, XML, Atom, RSS } FormatType; 我想构建一个将typedef的数值转换为字符串的函数。例如,如果消息[self toString:JSON]已发送;它将返回“ JSON”。 该函数将如下所示: -(NSString *) toString:(FormatType)formatType { //need help here return []; } 顺便说一句,如果我尝试这种语法 [self toString:FormatType.JSON]; 将typedef值传递给方法,我得到一个错误。我想念什么?
141 c  objective-c  enums  typedef 


1
“ FOUNDATION_EXPORT”和“ extern”
我想问一下在Objective C项目中使用FOUNDATION_EXPORT而不是背后的原因是什么。extern 我检查了这个问题,使用FOUNDATION_EXPORT赢得了340分(第一名),而extern仅获得74分(第二名)。 有人可以解释为什么吗?有使用FOUNDATION_EXPORT代替的任何实际原因extern吗? 谢谢!

23
自定义UITableView标头部分
我想UITableView为每个部分自定义标题。到目前为止,我已经实施了 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 这种UITabelViewDelegate方法。我想要做的是获取每个部分的当前标题,然后将其添加UILabel为子视图。 到目前为止,我还无法完成。因为,我找不到任何东西来获取默认节头。第一个问题,有什么方法可以获取默认节头? 如果不可能,那么我需要创建一个容器视图UIView,但这一次,我需要设置默认的背景颜色,阴影颜色等。因为,如果仔细查看节的标题,它已经被自定义了。 如何获取每个节标题的这些默认值? 谢谢你们。

13
我可以更改NSLayoutConstraint的multiplier属性吗?
我在一个超级视图中创建了两个视图,然后在视图之间添加了约束: _indicatorConstrainWidth = [NSLayoutConstraint constraintWithItem:self.view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view2 attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0.0f]; [_indicatorConstrainWidth setPriority:UILayoutPriorityDefaultLow]; _indicatorConstrainHeight = [NSLayoutConstraint constraintWithItem:self.view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view2 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f]; [_indicatorConstrainHeight setPriority:UILayoutPriorityDefaultLow]; [self addConstraint:_indicatorConstrainWidth]; [self addConstraint:_indicatorConstrainHeight]; 现在,我想用动画更改乘子属性,但是我不知道如何更改乘子属性。(我在头文件NSLayoutConstraint.h的私有属性中找到了_coefficient,但它是私有的。) 如何更改多重属性? 我的解决方法是删除旧的约束,并为添加新的约束multipler。


8
UIWebView背景设置为“清除颜色”,但不透明
我正在使用iOS SDK最新版本和XCode 4.2开发iOS 4应用程序。 我有一个一XIB UIWebView与阿尔法= 1.0,背景设置为清除颜色和不透明未设置。在此XIB上,我使用以下代码将图像设置为背景: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]]; self.view.backgroundColor = background; [background release]; } return self; } 在UIWebView是否显示静态的html: <html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html> 在iOS 5模拟器上,其背景是透明的,但在iOS 4设备上是灰色的。 有什么线索吗?


18
Objective-C:逐行读取文件
在Objective-C中处理大型文本文件的适当方法是什么?假设我需要分别阅读每一行,并希望将每一行都视为NSString。最有效的方法是什么? 一种解决方案是使用NSString方法: + (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 然后使用换行符分隔线,然后遍历数组中的元素。但是,这似乎效率很低。没有简单的方法将文件视为流,枚举每一行,而不是一次全部读取吗?有点像Java的java.io.BufferedReader。

9
使用NSLocalizedString的最佳实践
我(像其他所有人一样)正在使用NSLocalizedString本地化我的应用程序。 不幸的是,存在一些“缺点”(不一定是NSLocalizedString本身的错误),包括 Xcode中的字符串没有自动完成功能。这使工作不仅容易出错,而且很麻烦。 您可能仅仅因为不知道已经存在等效字符串而重新定义了一个字符串(例如,“请输入密码”与“首先输入密码”) 与自动完成问题类似,您需要“记住” /复制粘贴注释字符串,否则genstring最终将对一个字符串产生多个注释 如果要genstring在对某些字符串进行本地化之后使用,则必须小心不要丢失旧的本地化版本。 相同的字符串分散在整个项目中。例如,您NSLocalizedString(@"Abort", @"Cancel action")在各处使用过代码,然后Code Review要求您重命名字符串NSLocalizedString(@"Cancel", @"Cancel action")以使代码更加一致。 我要做的(在SO上进行了一些搜索之后,我发现很多人都这样做了)是要有一个单独的strings.h文件,其中存放#define所有的本地化代码。例如 // In strings.h #define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil) // Somewhere else NSLog(@"%@", NSLS_COMMON_CANCEL); 这实质上提供了代码补全,更改变量名称的单个位置(因此不再需要genstring)和用于自动重构的唯一关键字。但是,这样做的代价是最终要获得一堆#define不是固有结构化的语句(例如LocString.Common.Cancel或类似的东西)。 因此,尽管这工作得很好,但我想知道你们在项目中如何做到这一点。还有其他方法可以简化NSLocalizedString的使用吗?甚至有一个封装它的框架吗?

18
获取按钮单击UITableViewCell内部
我有一个具有表视图的视图控制器和一个用于表单元格模板的单独的笔尖。单元格模板具有一些按钮。我想访问按钮单击以及在定义了Table视图的视图控制器内单击的单元格的索引。 所以,我有ViewController.h和ViewController.m在那里我有UITableView和TableTemplate.h,TableTemplate.m和TableTemplate.xib在那里我有定义的笔尖。我希望按钮点击事件中带有单元格索引ViewController.m。 我该怎么办?

26
较小时,UIScrollView的中心内容
我有一个UIImageView内部UIScrollView,可用于缩放和滚动。如果滚动视图的图像/内容大于滚动视图,则一切正常。但是,当图像变得小于滚动视图时,它将停留在滚动视图的左上角。我想使其保持居中状态,例如“照片”应用程序。 关于UIScrollView缩小内容时保持居中的内容有什么想法或例子吗? 我正在使用iPhone 3.0。 以下代码几乎可以正常工作。如果在达到最小缩放级别后捏住图像,图像将返回左上角。 - (void)loadView { [super loadView]; // set up main scroll view imageScrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]]; [imageScrollView setBackgroundColor:[UIColor blackColor]]; [imageScrollView setDelegate:self]; [imageScrollView setBouncesZoom:YES]; [[self view] addSubview:imageScrollView]; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"WeCanDoIt.png"]]; [imageView setTag:ZOOM_VIEW_TAG]; [imageScrollView setContentSize:[imageView frame].size]; [imageScrollView addSubview:imageView]; CGSize imageSize = …

15
如何使UIButton的文本对齐中心?使用IB
我不能以IB为中心设置UIButton的标题。我的标题是多行。像这样给 但是我想要这样 我已经在其中留出了空间,但我不想这样做。因为在某些情况下它不是完全对齐的,并且我知道有UILabel的属性可以设置对齐方式,但是我不想为此编写代码..只是想从IB设置所有内容。 谢谢

4
NSInvocation为假人?
NSInvocation工作原理如何?有没有很好的介绍? 我在理解以下代码(来自Mac OS X的Cocoa编程,第3版)如何工作时遇到一些问题,但同时也能够独立于教程示例来应用这些概念。代码: - (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index { NSLog(@"adding %@ to %@", p, employees); // Add inverse of this operation to undo stack NSUndoManager *undo = [self undoManager]; [[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index]; if (![undo isUndoing]) [undo setActionName:@"Insert Person"]; // Finally, add person to the array [employees insertObject:p atIndex:index]; } - …

10
更改UITableView节标题的字体大小
有人可以指导我以最简单的方法更改UITableView节标题中文本的字体大小吗? 我使用以下方法实现了节标题: - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 然后,我了解了如何使用此方法成功更改节标题高度: - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 我有使用此方法填充的UITableView单元格: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 但是,我对如何实际增加节标题文本的字体大小(或就此而言的字体样式)感到困惑? 有人可以帮忙吗?谢谢。

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.