小编nsg*_*ver的帖子

xcode CollectionViewController scrollToItemAtIndexPath不工作

我创建了一个CollectionView控件并用图像填充它.现在我想在开始时滚动到特定索引处的项目.我试过scrollToItemAtIndexPath如下:

[self.myFullScreenCollectionView scrollToItemAtIndexPath:indexPath 
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是,我得到了以下异常.任何人都可以指导我在哪里出错.

2013-02-20 02:32:45.219 ControlViewCollection1[1727:c07] *** Assertion failure in 
-[UICollectionViewData layoutAttributesForItemAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-2380.17
/UICollectionViewData.m:485 2013-02-20 02:32:45.221 ControlViewCollection1[1727:c07] must return a 
UICollectionViewLayoutAttributes instance from -layoutAttributesForItemAtIndexPath: for path 
<NSIndexPath 0x800abe0> 2 indexes [0, 4]
Run Code Online (Sandbox Code Playgroud)

xcode

30
推荐指数
6
解决办法
3万
查看次数

如何在此块中强烈修复"捕获'块'可能会导致保留周期"

我正在研究这个代码,它在网上执行一些冗长的异步操作,当它完成时它触发一个完成块,执行一些测试,如果一个变量得到一个值,另一个冗长的操作应该立即开始:

-(void) performOperation
{

    void(^completionBlock) (id obj, NSError *err, NSURLRequest *request)= ^(id obj,NSError *err, NSURLRequest *request){


        int variable=0;

        // Do completion operation A
        //...
        //...

        // Do completion operation B                
        //Get the variable value

        if(variable>0){
            [self doLengthyAsynchronousOperationWithCompletionBlock: completionBlock];
        }

    };

//Perform the lenhgty operation with the above completionBlock
    [self doLengthyAsynchronousOperationWithCompletionBlock: completionBlock];

}

-(void) doLengthyAsynchronousOperationWithCompletionBlock: completionBlock
{
    //Do some lengthy asynchronous stuff
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,我从编译器收到此警告:

WARNING: Block pointer variable 'completionBlock' is uninitialized when caputerd by the block
Run Code Online (Sandbox Code Playgroud)

我变了:

void(^completionBlock) (id obj, NSError …
Run Code Online (Sandbox Code Playgroud)

asynchronous objective-c ios objective-c-blocks retain-cycle

12
推荐指数
1
解决办法
6186
查看次数

在后台IOS中实现长时间运行的任务

我一直在开发一个应用程序,用户可以使用该应用程序录制视频AVFoundation并发送到服务器,视频的最大大小可达15M,具体取决于互联网速度和类型,大约需要1到5分钟才能将视频传输到服务器.我正在将录制的视频传输到后台线程中的服务器,以便用户可以在视频上传到服务器时继续应用程序上的其他内容.

在阅读Apple Docs 以在后台实现长时间运行的任务时,我发现只允许几种应用程序在后台执行.
例如

audio-该应用程序在后台播放可听内容给用户.(此内容包括使用AirPlay播放音频或视频内容.)

它是否也使我的应用程序符合在后台运行任务的资格?或者我需要在主线程上传输视频?

avfoundation ios

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

如何使用可点击的第一个单词创建UILabel

我想在iOS中创建标签,任何人都可以帮助我使标签文本的第一个单词加粗和可点击.标签显示用户名及其注释,第一个单词始终是用户名.提前致谢!

iphone objective-c uilabel ipad ios

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

UITextField:测试空字符串或nil或null的text属性不起作用

我有这个奇怪的问题测试空(或null)文本属性.在这里我的设置:我有一个带有6个文本字段的视图,这里是我用来通过那些字段的代码(加载到NSMutable数组中)...

NSEnumerator *portsEnumerator = [appliancePorts objectEnumerator];
UITextField *tmpField;
newSite.port = [NSMutableArray array];
while (tmpField =[portsEnumerator nextObject]) {
    NSLog(@"value:%@",tmpField.text);
    if (![tmpField.text isEqualToString:nil]) {
        [newSite.port addObject:(NSString *)tmpField.text];
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在这个界面中并在前两个字段中键入一些文本并在"仅"选项卡中显示重新生成字段时,这里的"完成"按钮就是我从GDB输出中得到的内容:

2010-08-10 20:16:54.489 myApp[4883:207] value:Value 1

2010-08-10 20:16:58.115 myApp[4883:207] value:Value 2

2010-08-10 20:17:02.002 myApp[4883:207] value:

2010-08-10 20:17:13.034 myApp[4883:207] value:

2010-08-10 20:17:15.854 myApp[4883:207] value:

2010-08-10 20:17:17.762 myApp[4883:207] value:
Run Code Online (Sandbox Code Playgroud)

我知道如果我测试空字符串它应该工作,因为转储到控制台时的文本属性显示:

UITextField: 0x5d552a0; frame = (20 8; 260 30); text = ''; clipsToBounds = YES; opaque = NO; tag = 1; layer = CALayer: 0x5d54f20
Run Code Online (Sandbox Code Playgroud)

但是,当我返回视图时,真正的问题开始,在同一个前两个字段中输入一些文本,然后在"完成"按钮之后输入(不通过另一个字段,因此它们不会得到任何焦点).这又是GDB输出...... …

iphone xcode objective-c uitextfield

5
推荐指数
1
解决办法
8419
查看次数

在iOs中手动加载不同的本地化nib

我正在开发一个支持多语言的应用程序.正如您所料,我不时使用如下代码加载一些nib文件:

 self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

然后,应用程序将从其languange文件夹加载相应的本地化xib版本.现在,我想知道是否可以手动加载本地化的nib文件.例如,而不是简单地加载CustomController,装载英语/法语/德国/的CustomController的版本.

有没有办法实现这个目标?

提前谢谢你的帮助!

PS我知道这可能不是在iphone/ipad应用程序中更改语言的正确方法,但这不是我的决定

[后来的编辑] 这看起来有点奇怪,像一个黑客,但它似乎工作(加载德国笔尖):

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];  
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle];
Run Code Online (Sandbox Code Playgroud)

我在这里找到了提示:http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

虽然它感觉不完全正确,我想知道是否还有其他解决方案.对于初学者来说,我觉得这会给旧版本的iO带来麻烦,因为语言文件夹有不同的命名约定

localization objective-c xib ios

5
推荐指数
1
解决办法
6106
查看次数

searchBar textDidChange

在我的tableViewController与searchBar我使用以下方法:

-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{
   ...my code
}
Run Code Online (Sandbox Code Playgroud)

当我直接在searchBar中输入文本时,它工作正常.

我现在的问题是我想以编程方式调用此方法 - 这意味着我想从我的代码填写搜索栏,我知道该怎么做(实际上我在我的语言词典应用程序中选择最近搜索过的单词)和打电话给:

 [SearchBar textDidChange: recentlySearchedWord]
Run Code Online (Sandbox Code Playgroud)

但这根本不适用于我的代码中的任何地方.

如果您对如何解决这个问题有所了解,请帮助我.

谢谢,

蒂姆

iphone searchbar ios5

5
推荐指数
1
解决办法
4205
查看次数

使用Cocoa减少图像字节大小

我有一个1600x1600 1.2MB的图像,其大小调整为320x320缩小到404KB.我需要进一步减少字节大小而不减少图像宽高比.

目前我正在使用 - TIFFRepresentationUsingCompression:factor:NSImage方法NSTIFFCompressionJPEG和因素似乎不影响图像大小/质量.

我怎么解决?

马尔科

cocoa objective-c

4
推荐指数
1
解决办法
4223
查看次数

使用NSComparisonResult对CoreData实体进行排序

我有这个distanceSorter.h/distanceSorter.m:

@interface CLLocation (DistanceComparison)

- (NSComparisonResult) compareToLocation:(CLLocation *)other;

@end

@implementation CLLocation (DistanceComparison)
- (NSComparisonResult) compareToLocation:(CLLocation *)other {

CLLocation *currentLocation = [[CLLocation alloc] initWithLatitude:[[NSUserDefaults standardUserDefaults] floatForKey:@"lastProcessedLatitude"] longitude:[[NSUserDefaults standardUserDefaults] floatForKey:@"lastProcessedLongitude"]];

CLLocationDistance thisDistance = [self distanceFromLocation:currentLocation];
CLLocationDistance thatDistance = [other distanceFromLocation:currentLocation];
if (thisDistance < thatDistance) { return NSOrderedAscending; }
if (thisDistance > thatDistance) { return NSOrderedDescending; }
return NSOrderedAscending;
}
@end
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它适用于数组:

[someArray sortedArrayUsingSelector:@selector(compareToLocation:)];
Run Code Online (Sandbox Code Playgroud)

但是...我想将它用作NSFetchedResultsController的sortDescriptor,如下所示:

NSSortDescriptor *sortDistance = [[NSSortDescriptor alloc] 
                                   initWithKey:@"LocationObject" 
                                   ascending:YES 
                                   selector:@selector(compareToLocation:)];

[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDistance]];
Run Code Online (Sandbox Code Playgroud)

实体中的"LocationObject"是"可转换的"并存储为CLLocation.

我在performFetch上得到这个:

*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'不支持的NSSortDescriptor选择器:compareToLocation:'

预先感谢您的帮助 :)

iphone core-data objective-c

4
推荐指数
1
解决办法
2443
查看次数

NSOperation和NSInvocationOperation之间的区别?

1)当我们添加NSOperationNSInvocationOperation进入时发生了NSoperationQueue什么?

2)NSoperation和之间有什么区别NSInvocationOperation

3)哪一个最好?

iphone ipad ios

4
推荐指数
1
解决办法
3868
查看次数