Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ͨ¹ýʾÀý½«Object-CÓëMonoTouch½øÐжԱÈ
 
×÷ÕߣºMerlin À´Ô´£ºMONO¿ª·¢ÕßÁªÃË ·¢²¼ÓÚ 2015-03-06
  2395  次浏览      28
 

±¾Õ½«½éÉÜMonoTouchÈçºÎ½«iOS SDK³éÏ󻯣¬´Ó¶ø¿ÉÒÔʹÓÃC#µÄÔ­ÉúÀà½øÐпª·¢£¬»¹½éÉÜÈçºÎʹÓÃoutlet£¬²¢½«CocoaTouch DelegateÄ£ÐͺÍC#µÄʼþÄ£ÐͽøÐбȽϣ¬½²½âÈçºÎÔÚC#ÖÐʹÓÃÕâÁ½ÖÖģʽ¡£±¾Õ»¹½«½éÉÜObjective-CµÄÄÚ´æ¹ÜÀíÓëMonoTouchµÄÀ¬»ø»ØÊÕ»úÖÆÖ®¼äµÄÒìͬ¡£

ÏÂÃæÍ¨¹ýʾÀýÀ´ËµÃ÷ÉÏÃæ½²µ½µÄһЩ¸ÅÄî¡£Ç°ÃæÌáµ½µÄUIActionSheet½«»áÔÚʾÀýÖÐʹÓá£Í¨¹ýObjective-CÓëC#µÄ¶Ô±È£¬½«ÓÐÖúÓÚÇå³þµØÁ˽âÈçºÎʹÓÃMonoTouch¿ª·¢Ó¦ÓóÌÐò¡£

×¢Ò⡡ͨ³££¬Ê¹ÓÃMonoTouch¿ª·¢Ó¦ÓóÌÐò²»ÐèÒªXcode»òObjective-C£¬ÕâÀïÕâÑù×öµÄÄ¿µÄÊÇ×÷Ϊ»ù´¡ÖªÊ¶¸¨Öú˵Ã÷MonoTouchµÄÉè¼Æ¡£Èç¹ûÓÐÐËȤÏëÁ˽â¸ü¶àµÄÏà¹Ø¼¼Êõ£¬ÍƼöÔĶÁStephen G. KochanдµÄ¡¶Programming in Objective-C 2.0¡·¡£

ʾÀý½«»áÈçͼ2-2Ëùʾ£¬ÔÊÐí¸Ä±äÓ¦ÓóÌÐòµÄ±³¾°Í¼Æ¬¡£

ͼ2-2¡¡Ó¦ÓóÌÐòÔËÐÐʱ¸Ä±äËüµÄ±³¾°Í¼Æ¬

2.2.1¡¡´ÓXcode¿ªÊ¼±àдӦÓóÌÐò

Ê×ÏÈʹÓÃXcode´´½¨Ê¾ÀýÓ¦ÓóÌÐò¡£ÔÚ¿ª·¢Ê±£¬¿ÉÒÔ½è¼øÖ®Ç°Ê¹ÓÃMonoDevelop¿ª·¢Ó¦ÓóÌÐòʱµÄ²½Ö裬²¢¶Ô±ÈËüÃÇÖ®¼äµÄ²»Í¬¡£´ò¿ªXcode²¢´´½¨Ò»¸öÃûΪLMT2-1µÄ»ùÓÚ´°¿ÚµÄÓ¦ÓóÌÐò¡£ÔÚIBÖÐË«»÷MainWindow.xibÎļþ´ò¿ªËü¡£Èçͼ2-3Ëùʾ£¬ÔÚIBÖн«Library´°¿ÚÖеÄUIImageViewÍϵ½¸Ã´°¿Ú¡£UIImageView½«ÓÃÀ´ÏÔʾ±³¾°Í¼Æ¬£¬ÒòΪҪÔÚ´úÂëÖиı䱳¾°Í¼Æ¬£¬ËùÒÔÐèҪΪËü´´½¨Ò»¸öoutlet¡£

ͼ2-3¡¡ÔÚIBÖÐÌí¼ÓUIImageView

IBÖÐÒªÁ¬½ÓµÄoutletÔÚObjective-CµÄÍ·ÎļþÖж¨Ò壬ÉÔºóÒªÔÚXcodeÖнøÐÐÌí¼Ó¡£²»¹ý£¬ÔÚÌí¼Ó֮ǰ£¬ÏÈÒªÔÚIBÖÐÍê³É½çÃæÉè¼Æ£¬½«Ò»¸ö°´Å¥ÍϷŵ½Í¼Æ¬ÊÓͼµÄ¶¥²¿¡£

×¢Òâ¡¡°´Å¥Í¨³£ÓëUIBarButtonItemÒ»Æð·ÅÔÚUIToolbarÄÚ¡£

°´Å¥µÄ×÷ÓÃÊÇ´ò¿ªUIActionSheet£¬È»ºóÔÚUIActionSheetÖÐÇл»Í¼Æ¬ÊÓͼÖеÄͼƬ¡£Òª½«ÏìÓ¦°´Å¥´¥Åö¶¯×÷µÄ´¦Àí´úÂëÓë°´Å¥Á¬½ÓÆðÀ´£¬ÐèÒªÔÚÍ·Îļþ¶¨ÒåÒ»¸ö²Ù×÷¡£ÔÚXcode¶¨ÒåºÃÕâЩ֮ºó£¬·µ»ØIBÖнøÐÐÁ¬½Ó¡£ÏÖÔÚ£¬»Øµ½Xcode¡£

ÔÚXcodeÖУ¬Ñ¡ÔñAppDelegateµÄÍ·Îļþ£¨LMT2_1AppDelegate.h£©£¬È»ºóÔÚÎļþÀïÌí¼Ó´úÂëÇåµ¥2-1ÖеĴúÂë¡£

´úÂëÇåµ¥2-1¡¡Objective-CÍ·ÎļþÖеÄOutletºÍAction

#import <UIKit/UIKit.h> 

@interface LMT2_1AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UIImageView *imageView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;

-(IBAction) changePicture: (id) sender;

@end

´úÂëÖÐΪUIImageViewÔö¼ÓÁËÒ»¸ö³ÆÎªimageViewµÄʵÀý±äÁ¿£¬²¢Ê¹ÓÃ@propertyÖ¸ÁîÉùÃ÷ËüÊÇIBOutlet£¬ÕâÑùÔÚxibÎļþÖУ¬IB¾Í¿ÉÒÔʹÓÃÕâ¸öʵÀý±äÁ¿À´Á¬½ÓͼƬÊÓͼ¡£

×¢Òâ¡¡IBOutletÖ»ÊÇÒ»¸ö¿ÕµÄºê£¬²»ÐèҪΪËü±àд´úÂ룬ËüµÄÖ÷Òª×÷ÓÃÊÇÓëIB¼¯³É¡£Í¬Ñù£¬IBActionÒ²²»»áÓзµ»ØÖµ£¬ËüÖ»ÊÇ×÷ΪIBµÄÒ»¸öÌáʾ¡£

»¹ÐèÒªÔÚÍ·ÎļþÖж¨Ò嶯×÷£¬ÒÔ±ãÔÚIBÖÐÁ¬½Ó°´Å¥µÄ´¥Åöʼþ¡£´ËÍ⣬ÔÚÀ¨ºÅÖж¨ÒåµÄ¿ÉÑ¡²ÎÊý£¨nonatomicºÍretain£©£¬»áÈñàÒëÆ÷¸ù¾ÝÄÚ´æ¹ÜÀíÆ÷ºÍÏß³ÌÀ´Éú³Éʵ¼ÊµÄÊôÐÔ¡£¿ÉÒÔ¿´µ½£¬ÕâÀïȷʵûÓÐÊôÐÔ£¬ËüÖ»ÊÇÎ§ÈÆgetterºÍsetter·½·¨µÄ¡°ÌÇÒÂÓï·¨¡±£¨syntactic sugar£©¡£Íê³ÉXcodeµÄ´úÂëºó£¬×ªµ½ÊµÏÖÎļþ£¨LMT2_1AppDelegate.m£©Ìí¼ÓÊôÐԺͶ¯×÷·½·¨µÄ´úÂë¡£

ÁíÒ»°ëµÄObjective-CÊôÐÔÐèҪʹÓÃ@synthesizeÖ¸ÁÔÚʵÏÖÎļþÌí¼Ó¸ÃÖ¸Áîºó£¬±àÒëÆ÷»áÔÚÍ·ÎļþÖÐÉú³ÉÊôÐԵ͍Òå¡£ÉÔºóÔÚʹÓÃMonoTouchʵÏִ˹ý³ÌµÄʱºò£¬»á·¢ÏÖMonoTouch¸ü¼òµ¥¡¢¸ü±ã½Ý¡£ÏÖÔÚ¿ªÊ¼Ìí¼ÓÊôÐԺͷ½·¨¡£

ÔÚLMT2_1AppDelegate.mÎļþÖУ¬ÔÚXcodeÄ£°åÒÑÓеĴ°¿ÚÓï¾äÏÂÌí¼ÓimageViewµÄSynthesizeÓï¾ä¡£´ËÍ⣬Ìí¼ÓchangePicture:·½·¨£¬²¢ÔÚ·½·¨ÄÚÌí¼ÓÈç´úÂëÇåµ¥2-2ÖÐËùÁгöµÄ¼Ç¼×Ö·û´®µÄ´æ¸ùʵÏÖ¡£Òª¼Çס£¬¶Ô±àÒëÆ÷À´Ëµ£¬IBActionÊÇûÓзµ»ØÖµµÄ¡£ÔÚ½éÉÜUIActionSheetµÄʱºò£¬»¹Òª»Øµ½ÕâÀïµÄʵÏÖ²Ù×÷¡£ÏÖÔÚ£¬±£´æXcodeÖеÄÎļþºó£¬Çл»»ØIBÖеÄMainWindow.xib¡£

´úÂëÇåµ¥2-2¡¡LMT2_AppDelegate.m

#import "LMT2_1AppDelegate.h"  

@implementation

@synthesize window;
@synthesize imageView;


- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch

[window makeKeyAndVisible];

return YES;
}

-(IBAction) changePicture: (id) sender{

NSLog(@"placeholder for UIActionSheet code");
}

- (void)dealloc {
[window release];
[imageView release];
[super dealloc];
}

ÔÚIBÖУ¬ÏÖÔÚÒª½«outletÁ¬½Óµ½imageView£¬ÕâÑù²Å¿ÉÒÔÔÚAppDelegateÀàÖÐͨ¹ý´úÂë¸Ä±ä±³¾°Í¼Æ¬¡£»¹ÒªÉèÖÃTarget-Action£¬ÕâÑù²ÅÄÜÔÚ´¥Åö°´Å¥µÄʱºòµ÷ÓÃchangePicture:·½·¨¡£ÏÖÔÚ¿ªÊ¼Íê³ÉÕâЩ²½Ö裬ҪעÒâÇø·ÖXcodeºÍObjective-CÓëMonoTouchÖ®¼äµÄ²»Í¬¡£

Ê×ÏÈ£¬½«AppDelegateµÄimageViewµÄoutletÁ¬½Óµ½xibÖеÄUIImageView¡£Èçͼ2-4Ëùʾ£¬ÔÚMainWindow.xibºÍConnections InspectorÖÐÑ¡ÔñAppDelegate£¬È»ºó½«imageView outletÍϵ½´°¿ÚµÄUIImageViewÖС£

ͼ2-4¡¡½«imageViewµÄoutletÁ¬½Óµ½UIImageView

½Ó×Å£¬ÐèÒªÁ¬½ÓµÄÊÇAppDelegate´úÂëÖд´½¨µÄchangePicture:·½·¨¡£ÕâÊÇÇ°Ãæ½²¹ýµÄTarget-ActionģʽµÄÒ»¸öÀý×Ó¡£µ±ÔÚMonoTouchÖÐʵÏÖÕâЩ¹¦ÄÜʱ£¬»á¿´µ½ÔÚC#ÖÐÊÇÈçºÎʹÓö¯×÷¼°ÈçºÎ½«´úÂëÁ¬½Óµ½C#·ç¸ñµÄʼþµÄ¡£Òª½«Objective-CµÄ´¦Àí´úÂëÁ¬½Óµ½°´Å¥ÉϵÄʼþ£¬ÏÈÔÚMainWindow.xibÖÐÑ¡Ôñ¸Ã°´Å¥£¬È»ºóÔÚConnections InspectorÖн«TouchUpInsideʼþÍϵ½AppDelegate¡£µ±ËÉ¿ªÊó±ê°´Å¥£¬IB»áµ¯³öÒ»¸ö°üº¬ËùÓÐʹÓÃIBActionÉùÃ÷µÄ·½·¨²Ëµ¥¡£´ËʱÕâ¸ö²Ëµ¥ÖÐÖ»ÓÐÒ»¸öchangePicture:·½·¨¡£Ñ¡ÔñchangePicture£¬×¢ÒâÔÚConnections InspectorÖУ¬°´Å¥µÄTouchUpInsideʼþÓëÄ¿±êÀàAppDelegateÖеÄchangePicture:¶¯×÷½¨Á¢ÁËÁ¬½Ó¡£±£´æºó£¬ÔÚXcodeÖÐÔËÐÐÓ¦ÓóÌÐò¡£

Ó¦ÓóÌÐòÔËÐк󣬴ÓXcodeÔËÐе÷ÊÔÆ÷¿ØÖÆÌ¨£¨Run¡úConsole£©¡£ÔÚ´¥ÅöÓ¦ÓóÌÐòµÄ°´Å¥ºó£¬»áÔÚ¿ØÖÆÌ¨¿´µ½Èçͼ2-5ËùʾµÄÈÕÖ¾ÐÅÏ¢¡£

ͼ2-5¡¡µ÷ÊÔÆ÷¿ØÖÆÌ¨ÏÔʾµÄchangePicture:·½·¨ÖеÄÈÕÖ¾´úÂë

ÏÖÔÚÒѾ­Í¨¹ýObjective-CµÄTarget-ActionģʽÁ¬½ÓÁËʼþ£¬ÏÂÒ»²½Òª×öµÄÊÇʹÓÃMonoDevelopʵÏÖͬÑùµÄ¹¦ÄÜ¡£

2.2.2¡¡ÔÚMonoTouchÖÐʵÏÖÏàͬµÄ¹¦ÄÜ

ÏÖÔÚ£¬ÁôÒâÒ»ÏÂMonoTouchÊÇÈçºÎʹÓÃC#µÄ·½Ê½ÊµÏÖʼþÏìÓ¦µÄTarget-ActionģʽµÄ¡£´ò¿ªMonoDevelop²¢´´½¨Ò»¸öÃûΪLMT2-2µÄ»ùÓÚiPhone´°¿ÚµÄй¤³Ì¡£ÔÚIBÖдò¿ªMainWindow.xib£¬Ìí¼ÓÒ»¸öUIImageViewºÍÒ»¸ö°´Å¥£¬Ð޸İ´Å¥ÉϵÄÎı¾Îª¡°Change Image¡±¡£ÏÖÔÚҪΪͼƬÊÓͼÌí¼ÓÒ»¸öoutletÒÔ±ã´úÂë¿ÉÒÔ·ÃÎʵ½Ëü£¬Òò´ËÔÚ´ËÁ¢¼´´´½¨Õâ¸öoutlet¡£ÒòΪÊÇÓÉAppDelegateµÄ´úÂë·ÃÎÊÕâ¸öoutlet£¬ËùÒÔÒªÔÚAppDelegateÖÐÌí¼ÓÕâ¸öoutlet¡£ÔÚLibrary´°¿ÚºÍIBµÄ±êǩҳÄÚÔÙ´ÎÑ¡ÔñAppDelegate£¬ÔÚOutletsÇøÓòÄÚÌí¼ÓÒ»¸öÃûΪimageViewµÄoutlet£¬ÐÞ¸ÄËüµÄÀàÐÍΪUIImageView¡£

×¢Òâ¡¡MonoTouchÖеÄUIKit°æ±¾ºÍ»ù´¡¼Ü¹¹·Ö±ð°üº¬ÔÚÃüÃû¿Õ¼äMonoTouch.UIKitºÍMonoTouch.FoundationÖС£

ÔÚObjective-CÖУ¬ÊÇÔÚAppDelegateµÄÍ·ÎļþÖÐÌí¼ÓoutletµÄ£¬¶øÔÚMonoTouchÖУ¬Ò»µ©xibÎļþÖеĶÔÏó£¨ÈçUIImageViewʵÀý£©ºÍoutletÖ®¼ä½¨Á¢Á¬½Ó£¬¾Í»áͨ¹ýÔÚ¾Ö²¿ÀàÖÐÉú³ÉµÄÊôÐÔ½«outletÁ¬½Óµ½´úÂë¡£ÊôÐÔÓÃConnectAttribute½øÐÐÉùÃ÷£¬ËüµÄ×÷ÓÃÓëObjective-CÖеÄIBOutletÒ»Ñù£¬¼´ÓëIB¼¯³É¡£

ÏÖÔÚ£¬ÔÚMainWindow.xib´°¿ÚÖÐÑ¡ÔñAppDelegate£¬Èç֮ǰ×ö¹ýµÄÒ»Ñù£¬½«imageViewµÄoutletÁ¬½Óµ½ÔÚ´°¿ÚÖеÄUIImageView¡£Èç¹ûÔÚIBÖб£´æÎļþºó£¬Çл»µ½MonoDevelopÖв鿴MainWindow.xib.designer.csÎļþ£¬¾Í»á¿´µ½¾Ö²¿ÀàºÍ¸Õ²ÅÌá¼°µÄÊôÐÔ¡£ÏÖÔÚ£¬Á¬½Ó°´Å¥¡£

µÚ1ÕÂÑÝʾÁËÈçºÎʹÓÃC#·ç¸ñµÄʼþÀ´Á¬½ÓUIButtonʼþ¡£ÏÖÔÚ¿ÉÒÔÊÔ×ÅʹÓÃÓë¸Õ²ÅÔÚObjective-CÖÐʹÓõÄTarget-AcitonģʽÀ´´ïµ½ÏàͬµÄЧ¹û¡£Òª¼Çס£¬Ä¿±êÊÇAppDelegate£¬ÒªÔÚAppDelegateÖд´½¨¶¯×÷·½·¨À´ÏìÓ¦°´Å¥µÄTouchUpInsideʼþ¡£ÀûÓÃMonoDevelopÓëIB¼¯³É£¬¿ÉÒÔ´ïµ½ÏàͬµÄЧ¹û¡£ÔÚIBµÄLibrary´°¿ÚÖУ¬Ñ¡ÔñAppDelegateµÄActions±êÇ©£¨ÔÚOutlets±êǩҳµÄÓұߵÚÒ»¸ö£©£¬Óá°changePicture:¡±Ñ¡ÔñÆ÷Ìí¼ÓÒ»¸ö¶¯×÷¡£È»ºó£¬Ñ¡Ôñ´°¿ÚÖеİ´Å¥£¬½«Connections InspectorÖеÄTouch Up InsideʼþÍϵ½MainWindow.xibÖеÄAppDelegateÉϽøÐÐÁ¬½Ó¡£ËÉ¿ªÊó±ê£¬µ¯³öÒ»¸ö֮ǰÔÚXcodeºÍIBÖгöÏÖ¹ýµÄchangePicture:Ñ¡ÔñÆ÷²Ëµ¥¡£Ñ¡ÔñchangePicture:Ñ¡ÔñÆ÷£¬²¢ÔÚIBÖб£´æËùÓÐÐ޸ġ£Èç¹û»ØÍ·¿´¿´ÔÚMainWindow.xib.designer.csÎļþÖеľֲ¿À࣬¾Í»á¿´µ½Ð´úÂëÒÑÌí¼Ó£¬ExportAttributeÉùÃ÷µÄ×÷ÓÃÊǽ«IBÖÐÌí¼ÓµÄ¶¯×÷´¦Àí´úÂë¹Ò½Óµ½changePictureÑ¡ÔñÆ÷¡£ÏÖÔÚÌí¼ÓʵÏÖ´úÂ루ÀàËÆÕ¼Î»·ûµÄ´úÂ룬ºóÃæ½«»áÌæ»»ÎªUIActionSheet£©¡£ÔÚMain.csÎļþÖУ¬Ìí¼ÓÒÔÏ´úÂëµ½AppDelegateÀࣺ

¡¶ÕâÀïÓеãÒªÌØ±ð˵Ã÷µÄµØ·½¡·

ÔËÐÐÓ¦ÓóÌÐò²¢´¥Åö°´Å¥£¬½«»á¿´µ½Ð´ÔÚMonoDevelopÖеÄApplication Output±êǩҳÖеÄÎı¾ÐÅÏ¢£¨Èçͼ2-6Ëùʾ£©¡£

ͼ2-6¡¡MonoDevelopÖÐApplication Output±êǩҳÏÔʾµÄ°´Å¥Ê¼þµÄÔËÐнá¹û

Ìáʾ¡¡Ê¹ÓÃC#ʼþ¿ÉÒÔ±ÜÃâ²»±ØÒªµÄ¶¯×÷¡£¾ÍÈçµÚ1ÕÂËù¿´µ½µÄ£¬ÕâÑù×öµÄºÃ´¦ÊÇ£¬¿ÉÒÔʹÓÃC#·ç¸ñµÄʼþÀ´ÊµÏÖ£¬´Ó¶ø±ÜÃâʹÓö¯×÷·½·¨À´ÊµÏÖ¡£Ö»ÐèҪΪ°´Å¥´´½¨Ò»¸öoutlet¾Í¿Éͨ¹ý³ÌÐò·ÃÎÊ×¢²áµÄʼþ¡£MonoTouchÖ§³Ö´´½¨C#ʼþίÍеÄÏÔʽ»Øµ÷·½·¨£¬ÒÔ¼°ÄäÃû·½·¨ºÍlambda±í´ïʽ¡£

ÕýÈçËù¿´µ½µÄ£¬MonoTouch¿ÉÒÔʹÓÃÓëObjective-CÏàͬµÄģʽʵÏÖʼþ´¦Àí¡£´ËÍ⣬MonoTouchÌṩÁ˸üÁé»îµÄC#·ç¸ñµÄʼþÒÔ¹©Ñ¡Ôñ¡£

ÏÖÔÚÒª×öµÄÊÇΪUIActionSheet±àÂëÒԸıäͼƬ¡£»¹ÊÇÏÈͨ¹ýXcodeʵÏÖ£¬È»ºóÔÙͨ¹ýMonoTouchʵÏÖ£¬ÒԱȽÏÁ½ÕßÔÚʵÏÖObjective-CίÍÐģʽ֮¼äµÄ²»Í¬¡£²»¹ý£¬ÔÚʵÏÖ֮ǰ£¬ÒªÏÈ»¨µãʱ¼äÁ˽âMonoTouchÊÇÈçºÎʵÏÖAppDelegateºÍÈçºÎ´¦ÀíËüµÄ¡£

2.2.3¡¡AppDelegateʵÏֵıȽÏ

ÔÚ±¾Êéǰ¼¸Õµļòµ¥Ê¾ÀýÖУ¬»¹²»ÄܶÔÓ¦ÓóÌÐò½øÐнṹ»¯Éè¼Æ£¬Õ⽫ÔÚµÚ3Õ½øÐн²Êö¡£È»¶ø£¬ÔÚ¿ª·¢Ó¦ÓóÌÐòÖÐ×Ü»áÓõ½AppDelegate¡£ÔÚĿǰµÄʾÀýÖУ¬ËùÓеÄÓ¦ÓóÌÐò´úÂë¶¼ÊÇÔÚËüÄÚ²¿Ìí¼ÓµÄ£¬Êµ¼ÊÉÏËüµÄ×÷ÓÃÊÇͨ¹ýÆäËûÀàÀ´´¦ÀíÓ¦ÓóÌÐòÂß¼­¡£AppDelegateÊÇÒ»¸öÔÚÓ¦ÓóÌÐòµÄÉúÃüÖÜÆÚÄÚÓÃÀ´ÏìÓ¦UIApplication¸÷Àà²Ù×÷²¢½øÐд¦ÀíµÄÀ࣬ÕâЩ´¦Àí°üÀ¨Ó¦ÓóÌÐòÖÕÖ¹¡¢Ó¦ÓóÌÐòÆô¶¯Íê³É¡¢½ÓÊÕϵͳ·¢³öµÄÄڴ澯¸æµÈ¡£ÔÚObjective-CÖУ¬AppDelegate¶¨ÒåΪһ¸öÃûΪUIApplicationDelegateµÄЭÒé¡£¼ÇסObjective-CЭÒé»ù±¾ÀàËÆÓÚC#½Ó¿Ú£¬³ýÁËһЩ·½·¨Ö¸¶¨Îª¿ÉÑ¡µÄÍâ¡£Èç¹û´ò¿ªXcodeÖеÄLMT2_1AppDelegate.hÎļþ£¬»á¿´µ½ÒÔÏ´úÂ룺

¡¶ÕâÀïÓеãÒªÌØ±ð˵Ã÷µÄµØ·½¡·

ÕâÊÇObjective-CÔÚÏà¹ØLMT2_1AppDelegate.mÎļþÖÐʵÏÖLMT2_1AppDelegateÀඨÒåµÄ·½Ê½£¬ËüÅÉÉúÓÚNSObject£¨CocoaTouchÖÐÆäËûÀàµÄ»ùÀ࣬ÀàËÆÓÚ.NETÖеÄObjectÀࣩ²¢×ñÑ­UIApplicationDelegateЭÒé¡£ÕâÒâζ×ÅʵÏÖ½«°üº¬Ð­ÒéµÄËùÓÐÇëÇó·½·¨ÒÔ¼°¿ÉÑ¡·½·¨¡£ÕâÊÇÔÚLMT2_AppDelegate.mÎļþÖÐʵÏֵķ½·¨application:didFinishLaunchingWithOptions:£¬Ó¦ÓóÌÐòÍê³ÉÆô¶¯ºó»áµ÷Óø÷½·¨¡£ÓëMonoTouch½øÐбȽϣ¬¾Í»á·¢ÏÖAppDelegateÊÇ×÷Ϊһ¸öÀàʵÏֵġ£Èç¹û×÷Ϊ½Ó¿ÚʵÏÖ£¬ÄǻṤ×÷²»ÁË£¬ÒòΪËü²»Äܸø¿ÉÑ¡·½·¨¸½¼ÓЭÒéÀàÐÍ£¬Òò¶øËü±ØÐëʵÏÖΪһ¸öÈç´úÂëÇåµ¥2-3ËùʾµÄ°üº¬¸÷ÖÖÐ麯ÊýµÄÀà¡£Õâ¾ÍÊÇÔÚMonoTouchÖп´µ½µÄģʽ£¬½«Objective-CЭÒéת»»ÎªÅÉÉúÓÚ»ùÀàµÄÀ࣬²¢Í¨¹ýÖØÐ´Ð麯Êý²åÈëʵÏÖ´úÂë¡£

´úÂëÇåµ¥2-3¡¡MonoTouch AppDelegateÀà

[Register("UIApplicationDelegate")]  
[Model()]
public class UIApplicationDelegate : NSObject

{
// Constructors
public UIApplicationDelegate();
public UIApplicationDelegate(NSCoder coder);
public UIApplicationDelegate(NSObjectFlag t);
public UIApplicationDelegate(IntPtr handle);

// Methods
public virtual void FinishedLaunching(UIApplication application);

public virtual bool FinishedLaunching(UIApplication application,
NSDictionary launchOptions);

public virtual void OnActivated(UIApplication application);

public virtual void OnResignActivation(
UIApplication application);

public virtual void HandleOpenURL(UIApplication application,
NSUrl url);

public virtual void ReceiveMemoryWarning(
UIApplication application);

public virtual void WillTerminate(UIApplication application);

public virtual void ApplicationSignificantTimeChange(
UIApplication application);

public virtual void WillChangeStatusBarOrientation(
UIApplication application,
UIInterfaceOrientation newStatusBarOrientation,
double duration);

public virtual void DidChangeStatusBarOrientation(
UIApplication application,
UIInterfaceOrientation oldStatusBarOrientation);

public virtual void WillChangeStatusBarFrame(
UIApplication application, RectangleF newStatusBarFrame);

public virtual void ChangedStatusBarFrame(
UIApplication application, RectangleF oldStatusBarFrame);

public virtual void RegisteredForRemoteNotifications(
UIApplication application, NSData deviceToken);

public virtual void FailedToRegisterForRemoteNotifications(
UIApplication application, NSError error);

public virtual void ReceivedRemoteNotification(
UIApplication application, NSDictionary userInfo);

...
}

×¢Òâ¡¡ËùÓÐÓÐExportAttribute¶¨ÒåµÄ·½·¨£¬ÔÚÖØÐ´Ð麯Êýʱ£¬²»ÐèÒªÖªµÀʵ¼ÊµÄÑ¡ÔñÆ÷»òÌṩÊôÐÔ¡£

ÕýÈçÇ°ÃæËù¿´µ½µÄ£¬ÔÚMonoTouchµÄʵÏÖÖУ¬MonoDevelopºÍIBÖ®¼äÏà½áºÏ²úÉúµÄËùÓдúÂë¶¼½áÊøÔÚÒ»¸ö¾Ö²¿ÀඨÒåÖУ¬ÕâΪʵÏÖÓ¦ÓóÌÐò´úÂëÌṩÁ˺ܴóµÄ×ÔÓɶȣ¬ÎÞÐëʹÓù¤¾ß½Ó¿Ú¡£¼Ì³ÐµÄ²ã´Î½á¹¹¿ÉÓÉ¿ª·¢ÈËÔ±ÔÚ¾Ö²¿ÀඨÒåÖÐ×ÔÐÐÉèÖá£ÔÚAppDelegateµÄÇé¿öÏ£¬MonoDevelop´úÂëÄ£°å´ÓUIApplicationDelegateÅÉÉú³öAppDelegate£¬ÔÚMain.csÎļþÖУ¬´úÂëÈçÏ£º

public partial class AppDelegate : UIApplicationDelegate

Ä£°å»¹ÖØÐ´ÁËFinishedLaunching·½·¨£¬ÕâÀï¿ÉÒÔʵÏÖ֮ǰÔÚObjective-CʵÏֵ썾ÍÏñÇ°ÃæÔÚXcodeÓ¦ÓóÌÐòÖп´µ½µÄ£©application:didFinishLaunchin-gWithOptions:¡£

×¢Òâ¡¡ÔÚhttp://tirania.org/tmp/rosetta.htmlÖУ¬¿ÉÒÔÕÒµ½Ò»¸ö·Ç³£ÓÐÓõÄÃûΪ¡°MonoTouch Rosetta Stone¡±µÄÎĵµ£¬ËüÁгöÁËMonoTouchÖÐÓëObjective-CÑ¡ÔñÆ÷¶ÔÓ¦µÄC#ʵÏÖ¡£

AppDelegateÊÇCocoaTouchÖÐʹÓõÄDelegationģʽµÄÒ»¸öʾÀý£¬MonoTouchÍêȫ֧³Ö¡£ÏÖÔÚÒª×öµÄÊÇÔÚÓ¦ÓóÌÐòÖÐʹÓÃUIActionSheet£¬ÕâÊÇiOS SDKÖÐÁíÒ»ÖÖDelegationÀý×Ó¡£

2.2.4¡¡Í¨¹ýXcodeʵÏÖUIActionSheet

ÏÖÔڻص½Xcode£¨ÌýÆðÀ´ÏñµçÓ°£©´´½¨UIActionSheet²¢ÉèÖò»Í¬°´Å¥ÒÔ±ã¸Ä±äimageViewÖеÄͼƬ¡£Ä¿Ç°£¬Ê¾ÀýÒ»Ö±ÊÇÔÚÉè¼Æ´°¿ÚºÍAppDelegateÖÐÍê³ÉµÄ£¬²»Ë㸴ÔÓ¡£ÈçǰËùÊö£¬Õâ²»ÊÇÌ«¹æ·¶µÄÉè¼Æ£¬¾ßÌå»áÔÚµÚ3ÕÂÖн²Êö¡£ÏÖÔÚÐèÒªÒ»¸öÊÓͼÀ´×÷ΪUIµÄÈÝÆ÷£¬Ò»Ö±ÒÔÀ´£¬ÎªÁ˼òµ¥Æð¼û¶¼Ö±½ÓÌø¹ýÁË£¬Ã»ÓÐÌÖÂÛ¡£Õâ¸öÊÓͼ¾ÍÊÇÔçÒÑ´æÔÚµÄimageView£¬½«ÓÃÀ´ÏÔʾActionSheet¡£ÔÚLMT2_1AppDelegate.mÎļþÖУ¬Ìí¼ÓÈç´úÂëÇåµ¥2-4ËùʾµÄ´úÂëµ½changPicture:·½·¨À´´´½¨ActionSheet¡£

´úÂëÇåµ¥2-4¡¡´´½¨UIActionSheetµÄ´úÂë

-(IBAction) changePicture: (id) sender{  

UIActionSheet *changeImageSheet = [[UIActionSheet alloc]
initWithTitle:@"Change Image"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:NULL
otherButtonTitles:@"Image 1", @"Image 2", NULL];

[changeImageSheet showInView:imageView];
[changeImageSheet release];
}

´úÂ뽫´´½¨²¢ÏÔʾһ¸öActionSheet£¬ËüÄÚ²¿³ýÁ˰üº¬"Image 1"ºÍ"Image 2"Á½¸ö°´Å¥Í⣬»¹°üº¬Ò»¸ö"Cancel"£¨È¡Ïû£©°´Å¥¡£Ê¹ÓÃotherButtonTitles¶¨ÒåµÄ°´Å¥µÄË÷Òý·Ö±ðÊÇ0ºÍ1£¬¶øÈ¡Ïû°´Å¥µÄË÷ÒýÊÇ2¡£°´Å¥µÄµ¥»÷²Ù×÷½«Ê¹ÓÃË÷Òý½øÐÐÇø·Ö£¬ÕâÑùµÄ´¦Àí·½Ê½ÊÇObjective-C Delegation£¨Î¯ÍУ©µÄÓÖÒ»¸öÀý×Ó¡£×¢Òâ´úÂëÖд´½¨ActionSheetʱÉèÖõÄDelegation£¨Î¯ÍУ©ÊôÐÔΪself£¬ËµÃ÷Ëü½«ÒýÓõ±Ç°¶ÔÏó£¬ÓëC#ÖеÄthisÒ»Ñù¡£Ò²¾ÍÊÇ˵£¬´«µÝ¸øActionSheetµÄ¶ÔÏó¾ÍÊÇLMT2_1AppDelegateʵÀý£¬ÒòΪµ±Ç°Àà¾ÍÊÇÕâ¸ö¡£Òò´Ë£¬LMT2_1AppDelegateÐèÒª×ñÑ­UIActionSheetDelegateЭÒé¡£ÏÖÔÚÉèÖÃUIActionSheetDelegateЭÒ飬´ò¿ª¶ÔÓ¦µÄÍ·Îļþ²¢ÔÚ¼âÀ¨ºÅÄÚUIApplicationDelegateЭÒ鶨ÒåµÄºóÃæ¼ÓÈëЭÒé¡£ÏÖÔÚҪʵÏÖUIActionSheetDelegateЭÒéµÄ´øÓÐÑ¡ÔñÆ÷µÄactionSheet: clickedButtonAtIndex:·½·¨ÒÔ±ã½ÓÊÕUIActionSheetµÄ°´Å¥µ¥»÷ºóµÄ»Øµ÷´¦Àí¡£ÒªÍê³ÉÕâ¸ö£¬ÔÚ@end:ǰµÄÍ·ÎļþÌí¼ÓÒÔÏ´úÂ룺

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

µ±UIActionSheetµÄ°´Å¥µ¥»÷ºó£¬ÊµÏÖ·½·¨½«Ö´Ðв¢·µ»Øµ¥»÷°´Å¥µÄË÷Òý¡£´¦Àí´úÂë¿É¸ù¾ÝË÷Òý¸Ä±äͼƬ¡£

ÔÚLMT2_1AppDelegate.mÎļþÖÐÌí¼Ó´úÂëÇåµ¥2-5ËùʾµÄ´úÂëÍê³ÉʵÏÖ¡£

´úÂëÇåµ¥2-5¡¡actionSheet:clickedButtonAtIndex:·½·¨µÄʵÏÖ´úÂë

- (void)actionSheet:(UIActionSheet *)actionSheet  
clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
imageView.image = [UIImage imageNamed: @"image1.jpg"];
break;
case 1:
imageView.image = [UIImage imageNamed: @"image2.jpg"];
break;
case 2:
NSLog(@"cancel");
break;
default:
break;
}
}

´úÂëÇåµ¥2-5ÒýÓÃÁËimage1.jpgºÍiamge2.jpgÕâÁ½¸öͼƬ¡£

×¢Òâ¡¡±¾ÊéµÄʾÀýͼƬºÍ´úÂë¿ÉÒÔµ½×÷ÕßÔÚGithubµÄ¿Õ¼ähttps://github.com/mikebluesteinÏÂÔØ¡£

Èçͼ2-7Ëùʾ£¬½«Í¼Æ¬´ÓFinderÍϷŵ½Group & filesϵÄLMT2-1¹¤³ÌµÄ¸ùĿ¼Ï£¬Xcode×Ô¶¯½«ËüÃÇ´ò°üµ½Ó¦ÓóÌÐò·¢²¼°ü¡£ËÉ¿ªÊó±êºó£¬Ñ¡ÔñCopy Items into Destination Group’s FolderÒԱ㽫ËüÃǸ´ÖƵ½ÓëXcode¹¤³ÌÏàͬµÄλÖá£

ͼ2-7 Ìí¼Óµ½XCodeµÄGroup && FilesϵÄͼƬÎļþ

ÔÚXcodeÖÐÉú³É²¢ÔËÐÐÓ¦ÓóÌÐò£¬È»ºóµ¥»÷°´Å¥´ò¿ªActionSheet²¢´ÓÖÐÑ¡ÔñÒ»¸ö°´Å¥À´¸Ä±äͼƬ¡£µ±Ñ¡ÔñActionSheetµÄ°´Å¥Ê±£¬ActionSheetµÄίÍб»µ÷Ó㬴Ӷø´¦Àí°´Å¥µ¥»÷µÄ´úÂëÒ²»áµ÷Ó᣿ÉÒÔ¿´µ½£¬Objective-CÖеÄίÍÐÉè¼ÆÄ£Ê½·Ç³£ÀàËÆÓÚÆäËûÓïÑԵĻص÷½Ó¿Ú£¬Æ©ÈçC#¡£²»¹ý£¬ÓÉÓÚ¿ÉÑ¡·½·¨ÐèÒªÖ§³ÖЭÒ飬ËùÒÔMonoTouchͨ¹ýÀàÀ´ÊµÏÖ¡£ÈçÒÔÉÏ¿´µ½µÄ£¬ÔÚObjective-CÖУ¬AppDelegateµÄµ¥Ò»ÊµÏÖÔÚʾÀýÖÐÒª×ñÑ­ÃûΪUIApplicationDelegateºÍUIActionSheetDelegateµÄЭÒé¡£ÔÚMonoTouchÖУ¬Òª´¦ÀíÕâ¸ö¿ÉÄܻ᲻֪Ëù´ë£¬ÎÞ´ÓÏÂÊÖ£¬Òò¶øÐèҪʹÓÃÀàÀ´ÊµÏÖ£¬µ«²»ÔÊÐí¶àÖØ¼Ì³Ð¡£ÏÖÔڻص½MonoDevelop²¢Íê³ÉʵÏÖ¡£

2.2.5¡¡ÔÚMonoTouchÖÐʵÏÖUIActionSheet

ÔÚMonoTouchÖУ¬»áÔÚ¹¹Ô캯ÊýÖÐÓ³Éä´úÂëÇåµ¥2-4ÖÐObjective-CµÄinitWithTitle: delegate:cancelButtonTitle:destructiveButtonTitle:otherB-uttonTitles:·½·¨¡£´ËÍ⣬ÔÚC#ÖÐÏÔʾUIActionSheetÈÔÈ»¿ÉÒÔµ÷ÓÃShowInView·½·¨¡£²»¹ý£¬ÕâʱºòίÍÐÖ¸ÕëÖ¸ÏòµÄ²»Êǵ±Ç°ÊµÀý£¬ÒòΪËüÒѾ­ÊÇUIApplicationDelegateµÄ×ÓÀ࣬¶øÊÇ´ÓUIActionSheetDelegateÅÉÉúµÄǶÌ×À࣬ÕâÑù¾Í¿ÉÒÔ±£Ö¤Î¯ÍÐʵÏÖ·â×°ÔÚÀࣨAppDelegate£©ÄÚ£¬ÒԱ㴴½¨µÄÀàʵÀý¿ÉÒÔ½øÐÐίÍд¦Àí£¨UIActionSheet£©¡£Æäʵ£¬Ò²²»±Ø·ÇµÃÕâÑùǶÈëίÍÐÀ࣬»¹¿ÉÒÔÔÚÕâ¸öÀàµÄÍⲿ´´½¨Ëü¡£²»¹ý£¬ÏñǶÈëίÍÐÕâÑùµÄ´¦Àí·½Ê½ÔÚMonoTouchÖÐÊǾ­³£Óõ½µÄ£¬¶øÇÒËü±íÏֵúܺ᣸ù¾ÝÒÔÉÏ˵Ã÷£¬¾Í¿ÉʵÏÖÈç´úÂëÇåµ¥2-6ËùʾµÄchangePicture·½·¨¡£

´úÂëÇåµ¥2-6¡¡ÔÚMonoTouchÖÐÏÔʾUIActionSheet

UIActionSheet _changePictureSheet;  
...

partial void changePicture (MonoTouch.UIKit.UIButton sender){

_changePictureSheet = new UIActionSheet(
"Change Picture", new ChangePictureActionSheetDelegate(this),
"Cancel", null, "Image 1", "Image 2");

_changePictureSheet.ShowInView(imageView);
}

ChangePictureActionSheetDelegate¾ÍÊǸղ޲µ½µÄǶÌ×Àà¡£ÔÚObjective-CÖУ¬Ê¹ÓÃactionSheet:clickedButtonAtIndex:·½·¨À´´¦ÀíUIActionSheet°´Å¥µÄµ¥»÷²Ù×÷¡£ÔÚMonoTouchÖУ¬Ç°ÃæÒѾ­Ìá¹ý£¬ÒªÍ¨¹ýÖØÐ´Ð麯ÊýÀ´ÊµÏÖ¡£ÊµÏÖ·½·¨µÄ¶¨Òå´úÂëÈçÏ£º

public virtual void Clicked (UIActionSheet actionSheet, int buttonIndex)

ÓëObjective-CʾÀýÒ»Ñù£¬ÊµÏÖ½«Ê¹Óõ¥»÷°´Å¥µÄË÷ÒýÀ´Çл»Í¼Æ¬ÊÓͼµÄͼƬ¡£ÔÚµ±Ç°°æ±¾µÄMonoTouchÖÐҪעÒ⣬Cancel£¨È¡Ïû£©°´Å¥µÄË÷ÒýÊÇ×îºóÒ»¸öË÷Òý£¬¶ø²»ÊÇObjective-CÖеĵÚÒ»¸öË÷Òý¡£Èç¹ûÐèÒª£¬Ò²¿ÉÒÔͨ¹ýUIActionSheetµÄCancelButtonIndexÊôÐÔÀ´ÐÞ¸ÄCancel£¨È¡Ïû£©°´Å¥µÄË÷ÒýÖµ¡£ÎªÁ˼òµ¥Æð¼û£¬ÕâÀォʹÓÃĬÈÏÖµ£¬ChangePictureActionSheetDelegateÀàµÄʵÏÖ´úÂëÈç´úÂëÇåµ¥2-7Ëùʾ¡£

×¢Òâ¡¡ÏÂÒ»°æ±¾µÄMonoTouch»á¹Ì¶¨Cancel£¨È¡Ïû£©°´Å¥µÄλÖá£

´úÂëÇåµ¥2-7¡¡ÔÚChangePictureActionSheetDelegateÀàʵÏÖµ¥»÷²Ù×÷

class ChangePictureActionSheetDelegate : UIActionSheetDelegate  
{
AppDelegate _appDel;

public ChangePictureActionSheetDelegate (AppDelegate appDel)
{
_appDel = appDel;
}

public override void Clicked (UIActionSheet actionSheet,
int buttonIndex)
{
switch (buttonIndex) {
case 1:
appDel.imageView.Image = UIImage.FromFile("image1.jpg");
break;
case 2:
_appDel.imageView.Image = UIImage.FromFile("image2.jpg");
break;
}
}
}

ÏÖÔÚÖØ¸´ÔÚXcodeÖеIJÙ×÷£¬½«Í¼Æ¬¸´ÖƵ½¹¤³ÌĿ¼Ï¡£ÔÚFinderÖн«Í¼Æ¬Íϵ½MonoDevelop½â¾ö·½°¸Ê÷Ï£¬È»ºóµ¥»÷Èçͼ2-8ËùʾµÄ¶Ô»°¿òÖеÄCopy°´Å¥¡£ÔÚ½â¾ö·½°¸Ê÷ÖеÄͼƬÉÏÓÒ»÷£¨Èç¹ûʹÓõĵ¥°´Å¥Êó±ê£¬Çë°´ÏÂCtrl¼üÔÙµ¥»÷£©£¬È»ºóÉèÖÃΪBuild Action to Content£¬ÕâÑù¾Í¿ÉÒÔÔÚMonoDevelopÉú³ÉÓ¦ÓóÌÐòʱ°ÑͼƬ´ò°üµ½Ó¦ÓóÌÐò¡£

ͼ2-8 MonoDevelopµÄ¸´ÖÆÎļþ¶Ô»°¿ò

×¢Òâ¡¡Èç¹ûÔÚMonoDevelopÖд´½¨Îļþ¼Ð£¬µÈͬÓÚÔÚ´ÅÅÌÉÏ´´½¨Îļþ¼Ð£¬ÕâÓëÔÚXcodeÖÐÔÚ´ÅÅ̸ùĿ¼ÏÂĬÈÏΪÐéÄâĿ¼²»Í¬¡£

×îºóÍê³ÉÈç´úÂëÇåµ¥2-8ËùʾµÄMain.csÎļþ¡£Èç¹ûÏÖÔÚÉú³É²¢ÔËÐÐÓ¦ÓóÌÐò£¬Çл»Í¼Æ¬£¬ÄÇôЧ¹ûÓëÔÚObjective-CÖп´µ½µÄÒ»Ñù¡£

´úÂëÇåµ¥2-8¡¡Main.csµÄ×îºó°æ±¾

using System;  
using System.Collections.Generic;
using System.Linq;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace LMT22
{
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args);
}
}

// The name AppDelegate is referenced in the MainWindow.xib file.
public partial class AppDelegate : UIApplicationDelegate
{
UIActionSheet _changePictureSheet;

// This method is invoked when the application has
// loaded its UI and its ready to run
public override bool FinishedLaunching (UIApplication app,
NSDictionary options)
{
window.MakeKeyAndVisible ();

return true;
}

class ChangePictureActionSheetDelegate : UIActionSheetDelegate
{
AppDelegate _appDel;

public ChangePictureActionSheetDelegate (
AppDelegate appDel)
{
_appDel = appDel;
}

public override void Clicked (UIActionSheet actionSheet,
int buttonIndex)
{
switch (buttonIndex) {
case 1:
_appDel.imageView.Image =
UIImage.FromFile ("image1.jpg");
break;
case 2:
_appDel.imageView.Image =
UIImage.FromFile ("image2.jpg");
break;
}
}

}

partial void changePicture (MonoTouch.UIKit.UIButton sender)
{

_changePictureSheet = new UIActionSheet (
"Change Picture",
new ChangePictureActionSheetDelegate (this), "Cancel",
null, "Image 1", "Image 2");

_changePictureSheet.ShowInView (imageView);
}

// This method is required in iPhoneOS 3.0
public override void OnActivated (UIApplication application)
{
}
}
}

ÏÖÔÚ£¬ÒѾ­Á˽âÁËÈçºÎÔÚMonoTouchÖÐʹÓÃC#¿ª·¢Ó¦ÓóÌÐò£¬²¢ÓëÔÚXcodeÖÐʹÓÃObjective-C¿ª·¢iPhoneÓ¦ÓóÌÐòµÄºËÐÄÉè¼ÆÄ£Ê½×öÁ˱Ƚϡ£ÏÂÃæÒªÁ˽âµÄÊÇMonoTouchÈçºÎ´´½¨ÕâЩ²¢ÈÃËüÃǹ¤×÷¡£

   
2395 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ