2

我正在使用多点连接在蓝牙上发送文件。进度存储在一个名为 Progress 的变量中:

NSProgress* progress;

并以这种方式访问​​:

progress.fractionCompleted

当数字更改时,如何调用方法来更新我的 UIprogressBar?

有一个方法:

-(void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress

{
NSLog(@"RECEIVING... %@ from peer: %@", progress, peerID);

}

但它只被调用一次......

4

1 回答 1

5

您可以在 fractionCompleted 上使用 KVO 类似的东西

    [_progress addObserver:self 
        forKeyPath:@"fractionCompleted" 
           options:NSKeyValueObservingOptionNew 
           context:NULL];

然后覆盖observeValueForKeyPath

    - (void)observeValueForKeyPath:(NSString *)keyPath 
                          ofObject:(id)object 
                            change:(NSDictionary *)change 
                           context:(void *)context
    {
        if (object == _progress) {
            // Handle new fractionCompleted value
            return;
        }

    [super observeValueForKeyPath:keyPath 
                     ofObject:object 
                       change:change 
                      context:context];
}

您可以查看 Matt 博客以获取更多详细信息 http://www.raywenderlich.com/49850/whats-new-in-objective-c-and-foundation-in-ios-7

于 2013-10-23T17:37:31.360 回答