UIActionSheet减少在控制器再写一次代理

利用 CFRunLoopRun 和 CFRunLoopStop 方法来将 UIActionSheet 改造成同步的调用。

 

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

 

@interface SynchronizedUIActionSheet : NSObject

 

- (NSInteger)showInView:(UIView *)view;

 

@end

 

 

 

//

//  SynchronizedUIActionSheet.m

//  SynchronizedUIActionSheet

//

//  Created by Evan on 16/6/29.

//  Copyright © 2016年 Evan. All rights reserved.

//

 

#import "SynchronizedUIActionSheet.h"

 

@interface SynchronizedUIActionSheet ()<UIActionSheetDelegate>

 

@property (nonatomic, strong) UIActionSheet *actionSheet;

 

@property (nonatomic, assign) NSInteger selectedIndex;

 

@end

 

@implementation SynchronizedUIActionSheet

 

- (NSInteger)showInView:(UIView *)view

{

      _actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"111" otherButtonTitles:nil, nil];

    [_actionSheet showInView:view];

    CFRunLoopRun();

    return _selectedIndex;

}

 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    _selectedIndex = buttonIndex;

    _actionSheet = nil;

    CFRunLoopStop(CFRunLoopGetCurrent());

}

 

@end

 

posted on 2016-06-30 14:04  Evan*少  阅读(123)  评论(0编辑  收藏  举报

导航