1
我使用this作爲設置基於塊的操作表的藍圖的一小部分。我對操作表的操作是取消,下載和流。我改變了BlockBasedActionSheet.h到:使用基於塊的操作表
@interface BlockBasedActionSheet : UIActionSheet<UIActionSheetDelegate> {
}
@property (copy) void (^cancelBlock)();
@property (copy) void (^downloadBlock)();
@property (copy) void (^streamBlock)();
- (id)initWithTitle:(NSString *)title cancelButtonTitle:(NSString *)cancelButtonTitle downloadButtonTitle:(NSString *)downloadButtonTitle streamButtonTitle:(NSString *)streamButtonTitle cancelAction:(void (^)())cancelBlock downloadAction:(void (^)())downloadBlock streamAction:(void (^)())streamBlock;
@end
和BlockBasedActionSheet.m到:
@implementation BlockBasedActionSheet
@synthesize cancelBlock = _cancelBlock, streamBlock = _streamBlock, downloadBlock = _downloadBlock;
- (id)initWithTitle:(NSString *)title cancelButtonTitle:(NSString *)cancelButtonTitle downloadButtonTitle:(NSString *)downloadButtonTitle streamButtonTitle:(NSString *)streamButtonTitle cancelAction:(void (^)())cancelBlock downloadAction:(void (^)())downloadBlock streamAction:(void (^)())streamBlock
{
self = [super initWithTitle:title delegate:self cancelButtonTitle:cancelButtonTitle destructiveButtonTitle:nil otherButtonTitles:downloadButtonTitle, streamButtonTitle, nil];
if (self) {
_cancelBlock = Block_copy(cancelBlock);
_downloadBlock = Block_copy(downloadBlock);
_streamBlock = Block_copy(streamBlock);
}
return self;
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSAssert(actionSheet == self, @"Wrong Action Sheet passed");
if (buttonIndex == 0) {
if (self.cancelBlock) {
self.cancelBlock();
}
}
if (buttonIndex == 1) {
if (self.downloadBlock) {
self.downloadBlock();
}
}
if (buttonIndex == 2) {
if (self.streamBlock) {
self.streamBlock();
}
}
}
@end
在我的TableView didSelectRowAtIndexPath方法,我把以下內容:
BlockBasedActionSheet *askSheet =
[[BlockBasedActionSheet alloc]
initWithTitle:@"What Do You Want To Do" cancelButtonTitle:@"Cancel" downloadButtonTitle:@"Download" streamButtonTitle:@"Stream" cancelAction:^ {
}downloadAction:^ {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
CGRect frame = CGRectMake(0, 49, 160, 50);
progress = [[UIProgressView alloc] initWithFrame:frame];
cell.contentView.tag = 100;
[cell.contentView addSubview:progress];
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
NSURL *url = [NSURL URLWithString:entry.articleUrl];
self.nameit = entry.articleTitle;
NSURLRequest *theRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
receivedData = [[NSMutableData alloc] initWithLength:0];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
}streamAction:^ {
if (_webViewController == nil) {
self.webViewController = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease];
}
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
_webViewController.entry = entry;
[self.navigationController pushViewController:_webViewController animated:YES];
}];
[askSheet showInView:self.tabBarController.view];
[askSheet release];
行動表禮物從上到下: 下載 流 取消
當我按下載時,取消操作執行; 流,下載操作執行; 取消,流動作執行
我做了什麼錯誤,它是失序?