├── SynchronizedUIActionSheetDemo ├── en.lproj │ ├── InfoPlist.strings │ └── ViewController.xib ├── ViewController.h ├── main.m ├── SynchronizedUIActionSheetDemo-Prefix.pch ├── AppDelegate.h ├── SynchronizedUIActionSheet.h ├── SynchronizedUIActionSheetDemo-Info.plist ├── SynchronizedUIActionSheet.m ├── AppDelegate.m └── ViewController.m ├── .gitignore └── SynchronizedUIActionSheetDemo.xcodeproj └── project.pbxproj /SynchronizedUIActionSheetDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | SynchronizedUIActionSheetDemo.xcodeproj/project.xcworkspace/ 2 | SynchronizedUIActionSheetDemo.xcodeproj/xcuserdata/ 3 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'SynchronizedUIActionSheetDemo' target in the 'SynchronizedUIActionSheetDemo' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_4_0 8 | #warning "This project uses features only available in iOS SDK 4.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ViewController; 12 | 13 | @interface AppDelegate : UIResponder 14 | 15 | @property (strong, nonatomic) UIWindow *window; 16 | 17 | @property (strong, nonatomic) ViewController *viewController; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/SynchronizedUIActionSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUIActionSheet.h 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SynchronizedUIActionSheet : NSObject 12 | 13 | @property (nonatomic, strong) NSArray * titles; 14 | @property (nonatomic, assign) NSInteger destructiveButtonIndex; 15 | @property (nonatomic, assign) NSInteger cancelButtonIndex; 16 | 17 | 18 | - (id)initWithTitles:(NSArray *)titles; 19 | 20 | - (NSInteger)showInView:(UIView *)view; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFiles 12 | 13 | CFBundleIdentifier 14 | com.fenbi.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/SynchronizedUIActionSheet.m: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUIActionSheet.m 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import "SynchronizedUIActionSheet.h" 10 | 11 | @implementation SynchronizedUIActionSheet { 12 | UIActionSheet * _actionSheet; 13 | NSInteger _selectedIndex; 14 | } 15 | 16 | @synthesize titles = _titles; 17 | @synthesize destructiveButtonIndex = _destructiveButtonIndex; 18 | @synthesize cancelButtonIndex = _cancelButtonIndex; 19 | 20 | - (id)initWithTitles:(NSArray *)titles { 21 | self = [super init]; 22 | if (self) { 23 | _titles = titles; 24 | _destructiveButtonIndex = 0; 25 | _cancelButtonIndex = titles.count - 1; 26 | } 27 | return self; 28 | } 29 | 30 | - (void)setTitles:(NSArray *)titles { 31 | _titles = titles; 32 | _cancelButtonIndex = titles.count - 1; 33 | } 34 | 35 | - (NSInteger)showInView:(UIView *)view { 36 | _actionSheet = [[UIActionSheet alloc] init]; 37 | 38 | // it seems not work, if no delegate set. 39 | //_actionSheet.title = @"add a title would be better."; 40 | _actionSheet.delegate = self; 41 | 42 | for (NSString * title in _titles) { 43 | [_actionSheet addButtonWithTitle:title]; 44 | } 45 | if (_destructiveButtonIndex != -1) { 46 | _actionSheet.destructiveButtonIndex = _destructiveButtonIndex; 47 | } 48 | if (_cancelButtonIndex != -1) { 49 | _actionSheet.cancelButtonIndex = _cancelButtonIndex; 50 | } 51 | [_actionSheet showInView:view]; 52 | CFRunLoopRun(); 53 | return _selectedIndex; 54 | } 55 | 56 | - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 57 | _selectedIndex = buttonIndex; 58 | _actionSheet = nil; 59 | CFRunLoopStop(CFRunLoopGetCurrent()); 60 | } 61 | 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | #import "ViewController.h" 12 | 13 | @implementation AppDelegate 14 | 15 | @synthesize window = _window; 16 | @synthesize viewController = _viewController; 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 19 | { 20 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 21 | // Override point for customization after application launch. 22 | self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 23 | self.window.rootViewController = self.viewController; 24 | [self.window makeKeyAndVisible]; 25 | return YES; 26 | } 27 | 28 | - (void)applicationWillResignActive:(UIApplication *)application 29 | { 30 | /* 31 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 32 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 33 | */ 34 | } 35 | 36 | - (void)applicationDidEnterBackground:(UIApplication *)application 37 | { 38 | /* 39 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 40 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 41 | */ 42 | } 43 | 44 | - (void)applicationWillEnterForeground:(UIApplication *)application 45 | { 46 | /* 47 | Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 48 | */ 49 | } 50 | 51 | - (void)applicationDidBecomeActive:(UIApplication *)application 52 | { 53 | /* 54 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 55 | */ 56 | } 57 | 58 | - (void)applicationWillTerminate:(UIApplication *)application 59 | { 60 | /* 61 | Called when the application is about to terminate. 62 | Save data if appropriate. 63 | See also applicationDidEnterBackground:. 64 | */ 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // SynchronizedUIActionSheetDemo 4 | // 5 | // Created by Tang Qiao on 12-6-24. 6 | // Copyright (c) 2012年 blog.devtang.com . All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "SynchronizedUIActionSheet.h" 11 | 12 | @implementation ViewController 13 | 14 | - (void)didReceiveMemoryWarning 15 | { 16 | [super didReceiveMemoryWarning]; 17 | // Release any cached data, images, etc that aren't in use. 18 | } 19 | 20 | #pragma mark - View lifecycle 21 | 22 | - (void)say:(NSString *)args, ... { 23 | NSMutableArray * array = [NSMutableArray array]; 24 | if (args) { 25 | NSString *tmpStr; 26 | 27 | va_list strings; 28 | va_start(strings, args); 29 | [array addObject:args]; 30 | while ((tmpStr = va_arg(strings, id)) != nil) { 31 | [array addObject:tmpStr]; 32 | } 33 | va_end(strings); 34 | } 35 | NSLog(@"array = %@", array); 36 | } 37 | - (IBAction)testArgButtonPressed:(id)sender { 38 | [self say:@"say", @"333", @"abc", nil]; 39 | } 40 | 41 | - (IBAction)testButtonPressed:(id)sender { 42 | SynchronizedUIActionSheet * synActionSheet = [[SynchronizedUIActionSheet alloc] init]; 43 | synActionSheet.titles = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc", @"ddd", nil]; 44 | synActionSheet.destructiveButtonIndex = 1; 45 | synActionSheet.cancelButtonIndex = 3; 46 | NSUInteger result = [synActionSheet showInView:self.view]; 47 | NSLog(@"result = %d", result); 48 | } 49 | 50 | - (void)someButtonClicked { 51 | UIActionSheet * sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"ddd" destructiveButtonTitle:@"aaa" otherButtonTitles:@"bbb", @"ccc", nil]; 52 | sheet.destructiveButtonIndex = 1; 53 | [sheet showInView:self.view]; 54 | } 55 | 56 | - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 57 | int result = buttonIndex; 58 | NSLog(@"result = %d", result); 59 | } 60 | 61 | - (void)viewDidLoad 62 | { 63 | [super viewDidLoad]; 64 | // Do any additional setup after loading the view, typically from a nib. 65 | } 66 | 67 | - (void)viewDidUnload 68 | { 69 | [super viewDidUnload]; 70 | // Release any retained subviews of the main view. 71 | // e.g. self.myOutlet = nil; 72 | } 73 | 74 | - (void)viewWillAppear:(BOOL)animated 75 | { 76 | [super viewWillAppear:animated]; 77 | } 78 | 79 | - (void)viewDidAppear:(BOOL)animated 80 | { 81 | [super viewDidAppear:animated]; 82 | } 83 | 84 | - (void)viewWillDisappear:(BOOL)animated 85 | { 86 | [super viewWillDisappear:animated]; 87 | } 88 | 89 | - (void)viewDidDisappear:(BOOL)animated 90 | { 91 | [super viewDidDisappear:animated]; 92 | } 93 | 94 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 95 | { 96 | // Return YES for supported orientations 97 | return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 98 | } 99 | 100 | @end 101 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo/en.lproj/ViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1280 5 | 11E53 6 | 1938 7 | 1138.47 8 | 569.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 933 12 | 13 | 14 | IBProxyObject 15 | IBUIView 16 | IBUIButton 17 | 18 | 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | PluginDependencyRecalculationVersion 23 | 24 | 25 | 26 | 27 | IBFilesOwner 28 | IBCocoaTouchFramework 29 | 30 | 31 | IBFirstResponder 32 | IBCocoaTouchFramework 33 | 34 | 35 | 36 | 274 37 | 38 | 39 | 40 | 292 41 | {{75, 188}, {171, 37}} 42 | 43 | 44 | 45 | _NS:225 46 | NO 47 | IBCocoaTouchFramework 48 | 0 49 | 0 50 | 1 51 | test syn-actionsheet 52 | 53 | 3 54 | MQA 55 | 56 | 57 | 1 58 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 59 | 60 | 61 | 3 62 | MC41AA 63 | 64 | 65 | 2 66 | 15 67 | 68 | 69 | Helvetica-Bold 70 | 15 71 | 16 72 | 73 | 74 | 75 | {{0, 20}, {320, 460}} 76 | 77 | 78 | 79 | 80 | 3 81 | MC43NQA 82 | 83 | 2 84 | 85 | 86 | NO 87 | 88 | IBCocoaTouchFramework 89 | 90 | 91 | 92 | 93 | 94 | 95 | view 96 | 97 | 98 | 99 | 7 100 | 101 | 102 | 103 | testButtonPressed: 104 | 105 | 106 | 7 107 | 108 | 9 109 | 110 | 111 | 112 | 113 | 114 | 0 115 | 116 | 117 | 118 | 119 | 120 | -1 121 | 122 | 123 | File's Owner 124 | 125 | 126 | -2 127 | 128 | 129 | 130 | 131 | 6 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 8 140 | 141 | 142 | 143 | 144 | 145 | 146 | ViewController 147 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 148 | UIResponder 149 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 150 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 151 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 152 | 153 | 154 | 155 | 156 | 157 | 11 158 | 159 | 160 | 161 | 162 | ViewController 163 | UIViewController 164 | 165 | IBProjectSource 166 | ./Classes/ViewController.h 167 | 168 | 169 | 170 | 171 | 0 172 | IBCocoaTouchFramework 173 | YES 174 | 3 175 | 933 176 | 177 | 178 | -------------------------------------------------------------------------------- /SynchronizedUIActionSheetDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 45E7826915971E56002C4B64 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45E7826815971E56002C4B64 /* UIKit.framework */; }; 11 | 45E7826B15971E56002C4B64 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45E7826A15971E56002C4B64 /* Foundation.framework */; }; 12 | 45E7826D15971E56002C4B64 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45E7826C15971E56002C4B64 /* CoreGraphics.framework */; }; 13 | 45E7827315971E56002C4B64 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 45E7827115971E56002C4B64 /* InfoPlist.strings */; }; 14 | 45E7827515971E56002C4B64 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E7827415971E56002C4B64 /* main.m */; }; 15 | 45E7827915971E56002C4B64 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E7827815971E56002C4B64 /* AppDelegate.m */; }; 16 | 45E7827C15971E56002C4B64 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E7827B15971E56002C4B64 /* ViewController.m */; }; 17 | 45E7827F15971E56002C4B64 /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 45E7827D15971E56002C4B64 /* ViewController.xib */; }; 18 | 45E7828715971FB9002C4B64 /* SynchronizedUIActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E7828615971FB9002C4B64 /* SynchronizedUIActionSheet.m */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 45E7826415971E56002C4B64 /* SynchronizedUIActionSheetDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SynchronizedUIActionSheetDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 23 | 45E7826815971E56002C4B64 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 24 | 45E7826A15971E56002C4B64 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 25 | 45E7826C15971E56002C4B64 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 26 | 45E7827015971E56002C4B64 /* SynchronizedUIActionSheetDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SynchronizedUIActionSheetDemo-Info.plist"; sourceTree = ""; }; 27 | 45E7827215971E56002C4B64 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 28 | 45E7827415971E56002C4B64 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 29 | 45E7827615971E56002C4B64 /* SynchronizedUIActionSheetDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SynchronizedUIActionSheetDemo-Prefix.pch"; sourceTree = ""; }; 30 | 45E7827715971E56002C4B64 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 31 | 45E7827815971E56002C4B64 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 32 | 45E7827A15971E56002C4B64 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 33 | 45E7827B15971E56002C4B64 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 34 | 45E7827E15971E56002C4B64 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController.xib; sourceTree = ""; }; 35 | 45E7828515971FB9002C4B64 /* SynchronizedUIActionSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynchronizedUIActionSheet.h; sourceTree = ""; }; 36 | 45E7828615971FB9002C4B64 /* SynchronizedUIActionSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SynchronizedUIActionSheet.m; sourceTree = ""; }; 37 | /* End PBXFileReference section */ 38 | 39 | /* Begin PBXFrameworksBuildPhase section */ 40 | 45E7826115971E56002C4B64 /* Frameworks */ = { 41 | isa = PBXFrameworksBuildPhase; 42 | buildActionMask = 2147483647; 43 | files = ( 44 | 45E7826915971E56002C4B64 /* UIKit.framework in Frameworks */, 45 | 45E7826B15971E56002C4B64 /* Foundation.framework in Frameworks */, 46 | 45E7826D15971E56002C4B64 /* CoreGraphics.framework in Frameworks */, 47 | ); 48 | runOnlyForDeploymentPostprocessing = 0; 49 | }; 50 | /* End PBXFrameworksBuildPhase section */ 51 | 52 | /* Begin PBXGroup section */ 53 | 45E7825915971E56002C4B64 = { 54 | isa = PBXGroup; 55 | children = ( 56 | 45E7826E15971E56002C4B64 /* SynchronizedUIActionSheetDemo */, 57 | 45E7826715971E56002C4B64 /* Frameworks */, 58 | 45E7826515971E56002C4B64 /* Products */, 59 | ); 60 | sourceTree = ""; 61 | }; 62 | 45E7826515971E56002C4B64 /* Products */ = { 63 | isa = PBXGroup; 64 | children = ( 65 | 45E7826415971E56002C4B64 /* SynchronizedUIActionSheetDemo.app */, 66 | ); 67 | name = Products; 68 | sourceTree = ""; 69 | }; 70 | 45E7826715971E56002C4B64 /* Frameworks */ = { 71 | isa = PBXGroup; 72 | children = ( 73 | 45E7826815971E56002C4B64 /* UIKit.framework */, 74 | 45E7826A15971E56002C4B64 /* Foundation.framework */, 75 | 45E7826C15971E56002C4B64 /* CoreGraphics.framework */, 76 | ); 77 | name = Frameworks; 78 | sourceTree = ""; 79 | }; 80 | 45E7826E15971E56002C4B64 /* SynchronizedUIActionSheetDemo */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 45E7827715971E56002C4B64 /* AppDelegate.h */, 84 | 45E7827815971E56002C4B64 /* AppDelegate.m */, 85 | 45E7827A15971E56002C4B64 /* ViewController.h */, 86 | 45E7827B15971E56002C4B64 /* ViewController.m */, 87 | 45E7827D15971E56002C4B64 /* ViewController.xib */, 88 | 45E7826F15971E56002C4B64 /* Supporting Files */, 89 | 45E7828515971FB9002C4B64 /* SynchronizedUIActionSheet.h */, 90 | 45E7828615971FB9002C4B64 /* SynchronizedUIActionSheet.m */, 91 | ); 92 | path = SynchronizedUIActionSheetDemo; 93 | sourceTree = ""; 94 | }; 95 | 45E7826F15971E56002C4B64 /* Supporting Files */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | 45E7827015971E56002C4B64 /* SynchronizedUIActionSheetDemo-Info.plist */, 99 | 45E7827115971E56002C4B64 /* InfoPlist.strings */, 100 | 45E7827415971E56002C4B64 /* main.m */, 101 | 45E7827615971E56002C4B64 /* SynchronizedUIActionSheetDemo-Prefix.pch */, 102 | ); 103 | name = "Supporting Files"; 104 | sourceTree = ""; 105 | }; 106 | /* End PBXGroup section */ 107 | 108 | /* Begin PBXNativeTarget section */ 109 | 45E7826315971E56002C4B64 /* SynchronizedUIActionSheetDemo */ = { 110 | isa = PBXNativeTarget; 111 | buildConfigurationList = 45E7828215971E56002C4B64 /* Build configuration list for PBXNativeTarget "SynchronizedUIActionSheetDemo" */; 112 | buildPhases = ( 113 | 45E7826015971E56002C4B64 /* Sources */, 114 | 45E7826115971E56002C4B64 /* Frameworks */, 115 | 45E7826215971E56002C4B64 /* Resources */, 116 | ); 117 | buildRules = ( 118 | ); 119 | dependencies = ( 120 | ); 121 | name = SynchronizedUIActionSheetDemo; 122 | productName = SynchronizedUIActionSheetDemo; 123 | productReference = 45E7826415971E56002C4B64 /* SynchronizedUIActionSheetDemo.app */; 124 | productType = "com.apple.product-type.application"; 125 | }; 126 | /* End PBXNativeTarget section */ 127 | 128 | /* Begin PBXProject section */ 129 | 45E7825B15971E56002C4B64 /* Project object */ = { 130 | isa = PBXProject; 131 | attributes = { 132 | LastUpgradeCheck = 0420; 133 | ORGANIZATIONNAME = Netease; 134 | }; 135 | buildConfigurationList = 45E7825E15971E56002C4B64 /* Build configuration list for PBXProject "SynchronizedUIActionSheetDemo" */; 136 | compatibilityVersion = "Xcode 3.2"; 137 | developmentRegion = English; 138 | hasScannedForEncodings = 0; 139 | knownRegions = ( 140 | en, 141 | ); 142 | mainGroup = 45E7825915971E56002C4B64; 143 | productRefGroup = 45E7826515971E56002C4B64 /* Products */; 144 | projectDirPath = ""; 145 | projectRoot = ""; 146 | targets = ( 147 | 45E7826315971E56002C4B64 /* SynchronizedUIActionSheetDemo */, 148 | ); 149 | }; 150 | /* End PBXProject section */ 151 | 152 | /* Begin PBXResourcesBuildPhase section */ 153 | 45E7826215971E56002C4B64 /* Resources */ = { 154 | isa = PBXResourcesBuildPhase; 155 | buildActionMask = 2147483647; 156 | files = ( 157 | 45E7827315971E56002C4B64 /* InfoPlist.strings in Resources */, 158 | 45E7827F15971E56002C4B64 /* ViewController.xib in Resources */, 159 | ); 160 | runOnlyForDeploymentPostprocessing = 0; 161 | }; 162 | /* End PBXResourcesBuildPhase section */ 163 | 164 | /* Begin PBXSourcesBuildPhase section */ 165 | 45E7826015971E56002C4B64 /* Sources */ = { 166 | isa = PBXSourcesBuildPhase; 167 | buildActionMask = 2147483647; 168 | files = ( 169 | 45E7827515971E56002C4B64 /* main.m in Sources */, 170 | 45E7827915971E56002C4B64 /* AppDelegate.m in Sources */, 171 | 45E7827C15971E56002C4B64 /* ViewController.m in Sources */, 172 | 45E7828715971FB9002C4B64 /* SynchronizedUIActionSheet.m in Sources */, 173 | ); 174 | runOnlyForDeploymentPostprocessing = 0; 175 | }; 176 | /* End PBXSourcesBuildPhase section */ 177 | 178 | /* Begin PBXVariantGroup section */ 179 | 45E7827115971E56002C4B64 /* InfoPlist.strings */ = { 180 | isa = PBXVariantGroup; 181 | children = ( 182 | 45E7827215971E56002C4B64 /* en */, 183 | ); 184 | name = InfoPlist.strings; 185 | sourceTree = ""; 186 | }; 187 | 45E7827D15971E56002C4B64 /* ViewController.xib */ = { 188 | isa = PBXVariantGroup; 189 | children = ( 190 | 45E7827E15971E56002C4B64 /* en */, 191 | ); 192 | name = ViewController.xib; 193 | sourceTree = ""; 194 | }; 195 | /* End PBXVariantGroup section */ 196 | 197 | /* Begin XCBuildConfiguration section */ 198 | 45E7828015971E56002C4B64 /* Debug */ = { 199 | isa = XCBuildConfiguration; 200 | buildSettings = { 201 | ALWAYS_SEARCH_USER_PATHS = NO; 202 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 203 | CLANG_ENABLE_OBJC_ARC = YES; 204 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 205 | COPY_PHASE_STRIP = NO; 206 | GCC_C_LANGUAGE_STANDARD = gnu99; 207 | GCC_DYNAMIC_NO_PIC = NO; 208 | GCC_OPTIMIZATION_LEVEL = 0; 209 | GCC_PREPROCESSOR_DEFINITIONS = ( 210 | "DEBUG=1", 211 | "$(inherited)", 212 | ); 213 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 214 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 215 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 216 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 217 | GCC_WARN_UNUSED_VARIABLE = YES; 218 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 219 | SDKROOT = iphoneos; 220 | }; 221 | name = Debug; 222 | }; 223 | 45E7828115971E56002C4B64 /* Release */ = { 224 | isa = XCBuildConfiguration; 225 | buildSettings = { 226 | ALWAYS_SEARCH_USER_PATHS = NO; 227 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 228 | CLANG_ENABLE_OBJC_ARC = YES; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | COPY_PHASE_STRIP = YES; 231 | GCC_C_LANGUAGE_STANDARD = gnu99; 232 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 233 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 234 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 235 | GCC_WARN_UNUSED_VARIABLE = YES; 236 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 237 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 238 | SDKROOT = iphoneos; 239 | VALIDATE_PRODUCT = YES; 240 | }; 241 | name = Release; 242 | }; 243 | 45E7828315971E56002C4B64 /* Debug */ = { 244 | isa = XCBuildConfiguration; 245 | buildSettings = { 246 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 247 | GCC_PREFIX_HEADER = "SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Prefix.pch"; 248 | INFOPLIST_FILE = "SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Info.plist"; 249 | PRODUCT_NAME = "$(TARGET_NAME)"; 250 | WRAPPER_EXTENSION = app; 251 | }; 252 | name = Debug; 253 | }; 254 | 45E7828415971E56002C4B64 /* Release */ = { 255 | isa = XCBuildConfiguration; 256 | buildSettings = { 257 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 258 | GCC_PREFIX_HEADER = "SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Prefix.pch"; 259 | INFOPLIST_FILE = "SynchronizedUIActionSheetDemo/SynchronizedUIActionSheetDemo-Info.plist"; 260 | PRODUCT_NAME = "$(TARGET_NAME)"; 261 | WRAPPER_EXTENSION = app; 262 | }; 263 | name = Release; 264 | }; 265 | /* End XCBuildConfiguration section */ 266 | 267 | /* Begin XCConfigurationList section */ 268 | 45E7825E15971E56002C4B64 /* Build configuration list for PBXProject "SynchronizedUIActionSheetDemo" */ = { 269 | isa = XCConfigurationList; 270 | buildConfigurations = ( 271 | 45E7828015971E56002C4B64 /* Debug */, 272 | 45E7828115971E56002C4B64 /* Release */, 273 | ); 274 | defaultConfigurationIsVisible = 0; 275 | defaultConfigurationName = Release; 276 | }; 277 | 45E7828215971E56002C4B64 /* Build configuration list for PBXNativeTarget "SynchronizedUIActionSheetDemo" */ = { 278 | isa = XCConfigurationList; 279 | buildConfigurations = ( 280 | 45E7828315971E56002C4B64 /* Debug */, 281 | 45E7828415971E56002C4B64 /* Release */, 282 | ); 283 | defaultConfigurationIsVisible = 0; 284 | }; 285 | /* End XCConfigurationList section */ 286 | }; 287 | rootObject = 45E7825B15971E56002C4B64 /* Project object */; 288 | } 289 | --------------------------------------------------------------------------------