小编jac*_*300的帖子

以编程方式创建UITableView

我在Xcode 4.6中有一个使用故事板的应用程序.我向视图控制器类添加了一个UITableView,它按预期工作.但是,当我尝试在故事板中删除UITableView并以编程方式将其添加回同一个类时,我遇到了两个具体问题:

1)虽然我将UITableViewCell类型设置为字幕类型,但不再显示详细信息标签.

2)当我选择一个单元格时应该发生的segue,并且甚至没有调用准备segue,表示当选择单元格时没有消息被发送到表视图.

这是相关代码:

@interface StatsTableViewController () <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) UITableView *tableView;

@end

@implementation StatsTableViewController

-(UITableView *)makeTableView
{
    CGFloat x = 0;
    CGFloat y = 50;
    CGFloat width = self.view.frame.size.width;
    CGFloat height = self.view.frame.size.height - 50;
    CGRect tableFrame = CGRectMake(x, y, width, height);

    UITableView *tableView = [[UITableView alloc]initWithFrame:tableFrame style:UITableViewStylePlain];

    tableView.rowHeight = 45;
    tableView.sectionFooterHeight = 22;
    tableView.sectionHeaderHeight = 22;
    tableView.scrollEnabled = YES;
    tableView.showsVerticalScrollIndicator = YES;
    tableView.userInteractionEnabled = YES;
    tableView.bounces = YES;

    tableView.delegate = self;
    tableView.dataSource = self;

    return …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uitableview ios

45
推荐指数
3
解决办法
11万
查看次数

为开发Xcode配置新设备

我是一个新的iOS开发者,虽然我已经在过去的Xcode配置设备的发展是成功的,我刚刚得到一个新的设备时遇到一个可怕的时间越来越Xcode中规定,并让我来测试它的应用程序.

当我将新设备连接到Xcode时,Xcode会识别并正确识别设备,但是当我运行应用程序时,我收到以下错误消息:"找不到此可执行文件的有效配置文件."

根据Apple文档,我应该首先使用以下步骤在Xcode中请求开发证书:

  1. 选择窗口>管理器>设备
  2. 选择配置配置文件.
  3. 单击窗口底部的"刷新"按钮.
  4. 输入您的用户名和密码,然后单击"登录".
  5. 登录到您的帐户后,会出现提示,询问Xcode是否应该请求您的开发证书.

我已经反复按照步骤1 - 4进行操作,每次Xcode崩溃之后我都可以进入第5步.我已经尝试完全关闭xcode,分离设备,清理项目,重新启动计算机等.有没有其他方式可以请求开发证书在Xcode之外?

好的,然后文档说我应该配置设备(授予我假设这一步取决于我无法实现的上一步的成功,但无论如何我都尝试过)使用以下步骤:

  1. 将您的设备连接到Mac.
  2. 打开"设备"组织器
  3. 选择你的iOS设备.
  4. 单击"用于开发"按钮.第一次向帐户添加设备ID时,Xcode会使用iOS通配符应用程序ID,开发证书和设备ID创建iOS团队配置文件.iOS Team Provisioning Profile也安装在您的iOS设备上.如果过去使用该设备进行开发,则可能不会显示"用于开发"按钮.如果发生这种情况,请单击屏幕底部的"添加到门户".

因此,"用于开发"按钮不会出现(它出现在我第一次尝试这一点,并没有因为),所以我点击"添加到门户按钮".每次我这样做,Xcode崩溃.

我目前已将代码签名标识设置为iPhone Developer(我的名字).我也试过将它设置为iPhone开发人员,甚至不要编码.我也去了iOS开发中心并在那里添加了设备(不确定我是否需要这样做).

在任何情况下,任何人都可以建议我可能缺少的任何东西或任何其他方法吗?

xcode ios ios-provisioning

38
推荐指数
2
解决办法
7万
查看次数

以编程方式创建UILabel

我知道这应该很简单,但我一直在努力以编程方式创建UILabel并让它按照我想要的方式运行.

我想要的是能够创建一个标签,设置最大属性,高度,宽度和字体大小,然后让文本变小和/或只是截断文本以容纳长文本字符串.

假设我希望我的标签的文本最大宽度为380,最大高度为20,最大字体大小为12.

所以这就是我试图创建这样一个标签:

UILabel *fromLabel = [[UILabel alloc]initWithFrame:CGRectMake(91, 15, 0, 0)];
fromLabel.text = [self fromSender];
fromLabel.font = [UIFont fontWithName:ProximaNovaSemibold size:12]; //custom font
fromLabel.numberOfLines = 1;
fromLabel.baselineAdjustment = YES;
fromLabel.adjustsFontSizeToFitWidth = YES;
fromLabel.adjustsLetterSpacingToFitWidth = YES;
fromLabel.size = [fromLabel.text sizeWithFont:fromLabel.font constrainedToSize:CGSizeMake(380, 20) lineBreakMode:NSLineBreakByTruncatingTail];
fromLabel.minimumScaleFactor = MIN_SCALE_FACTOR;
fromLabel.clipsToBounds = YES;
fromLabel.backgroundColor = [UIColor clearColor];
fromLabel.textColor = [UIColor blackColor];
fromLabel.textAlignment = NSTextAlignmentLeft;
[collapsedViewContainer addSubview:fromLabel];
Run Code Online (Sandbox Code Playgroud)

好的,所以标签出现了,但文字大于12,高度总是21!即使我将高度和文本大小值更改为极限大小,此代码也会创建一些无法调整的固定大小的标签.我似乎唯一可以缩小的是宽度.

我一定是在寻找一些基本的东西,但我真的无法弄清楚如何得到我想要的结果,也不明白为什么我得到了我得到的行为.

objective-c uilabel ios

32
推荐指数
3
解决办法
10万
查看次数

更改UICollectionView单元格的背景

我有一个以编程方式创建的UICollectionView.我希望集合视图以下列方式运行:

1. User touches cell
2. Cell background color changes
3. User releases touch
4. Cell background color changes
Run Code Online (Sandbox Code Playgroud)

这应该是一个快速的颜色更改,它发生在与执行tap操作相关的选择器之前,其中包含集合视图的viewcontroller从堆栈中弹出.

我一直在看这个问题:UICollectionView单元格改变背景,同时点击

其中有以下用于此目的的方法摘要:

// Methods for notification of selection/deselection and highlight/unhighlight events.
// The sequence of calls leading to selection from a user touch is:
//
// (when the touch begins)
// 1. -collectionView:shouldHighlightItemAtIndexPath:
// 2. -collectionView:didHighlightItemAtIndexPath:
//
// (when the touch lifts)
// 3. -collectionView:shouldSelectItemAtIndexPath: or -    collectionView:shouldDeselectItemAtIndexPath:
// 4. -collectionView:didSelectItemAtIndexPath: or -collectionView:didDeselectItemAtIndexPath:
// 5. -collectionView:didUnhighlightItemAtIndexPath:
Run Code Online (Sandbox Code Playgroud)

我假设我只需要从"触摸开始时"和"触摸结束时"实现上述方法之一.但无论我做什么,似乎背景颜色会发生变化,然后仍然会发生变化.这是我尝试过的一些不起作用的例子:

- (void)collectionView:(UICollectionView …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview uicollectionviewcell uicollectionviewdelegate

32
推荐指数
3
解决办法
4万
查看次数

如何更改Git的默认编辑器

我刚刚开始使用git一个月前.它是为我设置的,使用TextMate作为提交的默认编辑器.但是,我想将默认值切换为已安装的TextWrangler.我在网上环顾四周,找到了一行代码输入终端进行此操作.所以我打开了终端并键入:

cd Desktop
cd "projectName"
git config --global core.editor TextWrangler
git status
git add.
git commit  //then the error comes up
Run Code Online (Sandbox Code Playgroud)

错误说:错误:无法运行TextWrangler:没有这样的文件或目录错误:编辑器'TextWrangler'出现问题.请使用-m或-F选项提供消息.

我不知道这意味着什么或我做错了什么.我确定这是一个明显的错误,但任何人都可以解释如何解决这个问题吗?

git terminal

25
推荐指数
2
解决办法
2万
查看次数

CGBitMapContextCreate方法导致编译器警告Xcode 5而不是Xcode 4

我刚刚将Xcode从版本4.6.2更新到5.0,在我的项目中执行一个方法(在Xcode 4.6.2中创建)后突然发出编译器警告.我已经尝试在新旧版本的Xcode中重新打开该项目,并且我已经确认相同的方法在4.6.2中没有给出警告.

以下是在Xcode 5.0中引发警告的代码行:

CGContextRef context = CGBitmapContextCreate(NULL, frame.size.width * scaleFactor, frame.size.height * scaleFactor, 8, frame.size.width * scaleFactor * 4, colorSpace, kCGImageAlphaPremultipliedFirst);
Run Code Online (Sandbox Code Playgroud)

警告说:

"Implicit conversion from enumeration type 'enum CGImageAlphaInfo' to different enumeration type 'CGBitMapInfo' (aka 'enum CGBitMapInfo')"
Run Code Online (Sandbox Code Playgroud)

它似乎不是弃用警告,但我对这些类不太熟悉,无法解释其含义或知道如何解决它.任何帮助表示赞赏.

xcode cgcontext cgbitmapcontextcreate ios xcode5

24
推荐指数
2
解决办法
8178
查看次数

如何才能在首次发布时显示视图?

我使用Xcode 4.5和故事板构建了一个应用程序.应用程序第一次启动时,我希望初始视图控制器显示必须接受的条款和条件才能继续.之后,我希望应用程序启动并跳过第一个视图控制器并转到第二个视图控制器.

我知道我必须使用NSUserDefaults类和以下效果:if([[NSUserDefaults standard ...] boolForKey:@"iHaveAcceptedTheTerms"])

但我以前从未使用过这个类,也不知道如何实现这个代码.有人可以分享如何做到这一点的具体细节吗?

xcode ios

13
推荐指数
3
解决办法
1万
查看次数

动态设置UICollectionView的ContentSize

我有一个UICollectionView以编程方式创建的.创建集合视图后,我想根据它必须保存的单元格数动态定义集合视图高度.我不想启用滚动集合视图本身,而是将此集合视图作为子视图添加到包含在垂直内部的视图中UIScrollView.

例如,如果UICollectionView有10 UICollectionViewCells.它可能有200.0f的高度,但如果它有20个单元格,它的高度可能为300.0f,依此类推.

我试图通过遵循此处的Apple文档来实现此目的,从而覆盖了该collectionViewContentSize方法.

尽管此方法CGSize在调用时返回有效值,但在实例化集合视图时,它frame始终设置为零.

这是我到目前为止所做的:

//subclass UICollectionViewFlowLayout

@interface LabelLayout : UICollectionViewFlowLayout

@property (nonatomic, assign) NSInteger cellCount;
@property (nonatomic) UIEdgeInsets sectionInset;
@property (nonatomic) CGSize itemSize;
@property (nonatomic) CGFloat minimumLineSpacing;
@property (nonatomic) CGFloat minimumInteritemSpacing;

@end

- (id)init
{
   self = [super init];
    if (self) {
        [self setup];
    }

return self;
}

-(void)prepareLayout
{
    [super prepareLayout];
    _cellCount = [[self collectionView] numberOfItemsInSection:0];
}

- (void)setup
{
    self.sectionInset = …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview

11
推荐指数
1
解决办法
3万
查看次数

创建具有给定最小值和最大值的NSRange

我有一个int64_t值的集合,我需要建立一个索引.我以前用过:

NSIndexSet *set = [NSIndexSet indexSetWithRange:NSMakeRange(location, length)];
Run Code Online (Sandbox Code Playgroud)

制作索引集,但这次我不清楚我将如何根据我的信息做到这一点.

细节:我有一组价值观.我知道集合中的最高值,集合中的最低值以及集合中的值的数量.但是,这些值不一定是连续的.

例如,如果我有以下值:1,3,4,6,7,9我想创建一个包含集合中所有数字的集合,包括1和9之间,即set = 1-9.

我该怎么做?

编辑

我不应该说我有一个整数的"集合",而是 - 我有对象存储在核心数据中,每个对象都有一个与之关联的int64_t属性,所以我没有指向实际的对象集合的指针,我想避免只是为了创建一个集合来获取对象.

objective-c nsindexset nsrange

11
推荐指数
1
解决办法
1万
查看次数

通过Mailcore 2获取Gmails:线程ID与消息ID对比UID

我有一个iPad应用程序,允许用户使用Mailcore2访问他们的Gmail帐户.我想我已经理解了Gmail的线程ID,消息ID和UID之间的区别,直到我仔细查看当我执行消息获取操作时Mailcore2返回给我的内容.我希望有人可以澄清我的困惑.

以下是我认为我从Gmail文档中了解到的内容:

1)线程ID将作为同一对话的一部分的消息(具有它们自己的消息ID和UID)组合在一起

2)UID特定于消息,并且仅对包含它的文件夹唯一

3)消息ID特定于消息,并且在帐户的所有文件夹中是唯一的

我也做了以下假设:

1)线程具有线程ID并且是消息的集合.线程没有消息ID或UID.

2)消息具有消息ID,UID和线程ID(即使它是线程中的唯一消息)

3)通过UID获取消息获取具有落在所请求的UID范围内的UID的MESSAGES.

4)属于同一线程的消息将具有不同的UID和消息ID,但具有相同的线程ID.

好吧,假设上面的内容是正确的,我认为在UID的Mailcore2中典型的消息提取过程中,我会收到一组电子邮件,从这些电子邮件中我可以查看他们的线程ID,例如重构线程在客户端.但是,我似乎回到了线程而不是电子邮件.此外,我得到的每个线程不一定包含其所有"子"消息.

因此,例如,如果我的收件箱中有两个线程,每个线程包含五条消息,则Mailcore以MCOIMAPMessages的形式向我返回一组2个"电子邮件".每个"电子邮件"都有一个线程ID,一个消息ID和一个UID.所以我不确定如何在这两个线程上访问包含的电子邮件.我看到有一个引用数组......但是检查这个对象并没有发现任何有用的东西.当我记录每个线程的内容时,我只获得部分内容 - 比如线程中的5条消息中的4条.不确定这是Mailcore还是我的保存过程中的错误,因为我对这一切的工作原理不完全了解.

这是我获取消息的代码:

//创建获取操作以获取文件夹中的第(10)条消息(第一次提取由序列号完成,后续提取由UID完成

uint64_t location = MAX([info messageCount] - DefaultPageSize + 1, 1);
uint64_t size = serverMessageCount < DefaultPageSize ? serverMessageCount - 1 : DefaultPageSize - 1;

MCOIndexSet *numbers = [MCOIndexSet indexSetWithRange:MCORangeMake(location, size)];

MCOIMAPMessagesRequestKind kind =  MCOIMAPMessagesRequestKindUid |
      MCOIMAPMessagesRequestKindFullHeaders |
      MCOIMAPMessagesRequestKindFlags |
      MCOIMAPMessagesRequestKindHeaders |
      MCOIMAPMessagesRequestKindInternalDate;

if ([capabilities containsIndex:MCOIMAPCapabilityGmail]) {
        kind |= MCOIMAPMessagesRequestKindGmailLabels | MCOIMAPMessagesRequestKindGmailThreadID | MCOIMAPMessagesRequestKindGmailMessageID;
        self.gmailCapability = YES;
      }

fetchLatestEmails ([self.imapSession fetchMessagesByNumberOperationWithFolder:folder.folderId requestKind:kind numbers:numbers]); …
Run Code Online (Sandbox Code Playgroud)

gmail gmail-imap ios google-oauth mailcore2

9
推荐指数
1
解决办法
3136
查看次数