iOS பயன்பாடு: மல்டிகம்பொனென்ட் பிக்கருடன் பணிபுரிதல்



இந்த வலைப்பதிவு ஒரு யூனிட்டிலிருந்து மற்றொரு யூனிட்டிற்கு மாற்றத்தைக் காண்பிக்கும் ஒரு iOS பயன்பாட்டை உருவாக்குவது பற்றியது. இது ஒரு மட்லிகொம்பொனென்ட் பிக்கர், விழிப்பூட்டல்கள் போன்றவற்றின் செயல்பாட்டை விவரிக்கிறது.

முழுமையான நுண்ணறிவைப் பெற, தயவுசெய்து படிக்கவும் . IOS பயன்பாட்டுத் தொடரின் இரண்டாவது வலைப்பதிவு இதுவாகும்.





மல்டிகம்பொனென்ட் பிக்கரின் வேலை பற்றி ஆர்வமுள்ள ஒரு அனுபவமிக்க டெவலப்பராக நீங்கள் இருந்தால், நீங்கள் சரியான வலைப்பதிவுக்கு வந்துள்ளீர்கள். இந்த வலைப்பதிவில், ஒரு மல்டிகம்பொனொன்ட் பிக்கரை செயல்படுத்துவதன் மூலம் எங்கள் மாற்று பயன்பாட்டை மேலும் செயல்பாட்டுடன் விரிவாக்குவது பற்றியும், விழிப்பூட்டல்களைப் பயன்படுத்தி விதிவிலக்கான கையாளுதலை எவ்வாறு செய்வது என்பதையும் பற்றி பேசுவேன்.

இல்கடைசி வலைப்பதிவு,நாங்கள் அதைப் பார்த்தோம் உரை புலத்தில் எதையாவது தட்டச்சு செய்யும் போது, ​​விசைப்பலகை மேலெழுகிறது. மாற்ற வேண்டிய மதிப்பு உரை புலத்தில் தட்டச்சு செய்யப்பட்டு, பின்னர் விசைப்பலகை போகாமல் இருப்பதைக் காண்கிறோம்.



இந்த சிக்கலை தீர்க்க, முழு பார்வையையும் உள்ளடக்கிய ஒரு பொத்தானைச் சேர்க்க வேண்டும். பயனர் பின்னணியில் எங்கும் தொடும்போது, ​​விசைப்பலகை மறைந்துவிடும்.

இப்போது, ​​மேலே சென்று அதைச் செய்வோம். ஒரு பொத்தானை இழுத்து, பொத்தானின் வகையை தனிப்பயனாகவும், உரை வண்ணத்தை பண்பு ஆய்வாளரிடமிருந்து தெளிவான நிறமாகவும் அமைக்கவும்.

பண்புக்கூறு ஆய்வாளர்



எடிட்டர்> ஏற்பாடு> அனுப்புக்குத் தேர்ந்தெடுக்கவும்

முழு பார்வைக்கும் பொருந்தும் வகையில் பொத்தானின் அளவை மாற்றவும்.

இந்த பொத்தானை இப்போது பின்னணி கண்ணுக்கு தெரியாத பொத்தானாக செயல்படுகிறது, இது விசைப்பலகை மறைவதற்கு கிளிக் செய்யப்படுகிறது. இதற்காக IBAction ஐ எழுதுவோம், உதவி எடிட்டர் பயன்முறையைத் தேர்ந்தெடுத்து ViewController.h க்கு + இழுக்கவும். இணைப்பிற்கான செயலையும் பெயரையும் பின்னணி பட்டனுக்கு அமைத்து இணை என்பதைக் கிளிக் செய்க.

காட்சி கட்டுப்பாட்டு குறியீடு இப்போது இதுபோல் தெரிகிறது.

# இறக்குமதி ter இன்டர்ஃபேஸ் வியூ கன்ட்ரோலர்: UIViewController ropproperty (strong, nonatomic) IBOutlet UITextField * ValueTextField ropproperty (strong, nonatomic) IBOutlet UIPickerView * picker2 ropproperty (strong, nonatomic) NSArray * nonproatil - (IBAction) மாற்று: (UIButton *) அனுப்புநர் - (IBAction) பின்னணி பட்டன்: (ஐடி) அனுப்புநர் @end

ViewController.m க்கு மாறவும், பின்னர் பின்வரும் குறியீட்டை எழுதவும்.

மலைப்பாம்பில் __init__
- (IBAction) backgroundButton: (id) அனுப்புநர் {[_ValueTextField resignFirstResponder] [_picker2 resignFirstResponder] [_ResultLabel resignFirstResponder]}

தொடுதல் கண்டறியப்படும்போது முதல் பதிலளிப்பவரின் நிலையை வழங்க மற்ற எல்லா பொருட்களுக்கும் இங்கே குறியீடு சொல்கிறது. இப்போது, ​​பயன்பாட்டை இயக்கி பாருங்கள். நீங்கள் பின்னணியைத் தொடும்போது விசைப்பலகை போய்விடும் என்பதை நீங்கள் கண்டுபிடிக்க முடியும். இப்போது நீங்கள் தட்டச்சு செய்ததும் விசைப்பலகை செல்ல, பின்னணியின் பட்டன் முறையை அழைப்பாளரின் didselectRow () முறையில் அழைக்கவும். எனவே முறை குறியீடு பின்வருமாறு இருக்கும்.

- (வெற்றிடத்தை) pickerView: (UIPickerView *) pickerView didSelectRow: (NSInteger) in in Component: (NSInteger) கூறு {தேர்ந்தெடுக்கப்பட்ட மதிப்பு = _ தரவு [வரிசை] [சுய பின்னணி பட்டன்: 0]}

இப்போது, ​​பயன்பாட்டின் அழகுபடுத்தும் பகுதியில் நீங்கள் ஒரு பின்னணியைச் சேர்ப்பது மற்றும் ஒரு ஆடம்பரமான பொத்தான் படத்தைக் கொடுப்பது போன்றவற்றில் வேலை செய்யலாம். இருப்பினும், என்னுடையது, நான் ஒரு பின்னணி படத்தை அமைப்பேன்.
அதைச் செய்ய, முதலில் பொருத்தமான படத்தைக் கண்டுபிடி! பின்னர் அதை Images.xcassets கோப்புறையில் சேர்த்து, படத்தை 1x இலிருந்து 2x திரைக்கு உலகளாவிய அளவில் மாற்றவும்.

பயன்பாட்டை இயக்கி, அது நன்றாக வேலை செய்கிறதா என்று பாருங்கள்.

சாதனத்தை ஐபோன் 5 எஸ் என மாற்றினால்.

பயன்பாட்டை இயக்கவும்.

எல்லாவற்றையும் எதிர்பார்த்தபடி சிறப்பாக செயல்படுவதை இங்கே காணலாம். இப்போது எனது பொத்தானில் பின்னணியைச் சேர்த்து, தோற்றத்தை ஒரு பொத்தானைப் போல மாற்ற விரும்பினால் என்ன செய்வது? அதைச் செய்ய, நான் முதலில் ViewController.h இல் மாற்று பொத்தானை ஒரு IBOutlet ஐ சேர்ப்பேன்

ropproperty (வலுவான, nonatomic) IBOutlet UIButton * மாற்றவும்

பின்னர் பின்வரும் குறியீட்டை viewDidLoad () முறையில் சேர்க்கவும்

self.convert.backgroundColor = [UIColor colorWithRed: 0.4 green: 0.8 blue: 1.0 alpha: 1.0] [_convert setTitleColor: [UIColor whiteColor] forState: UIControlStateNormal]

எங்கள் பயன்பாட்டை இயக்கி பார்ப்போம், அது நமக்குப் பிடித்த வழி என்றால்.

சரி நல்லது! முடிவு லேபிளின் நிலைகளையும் நான் மாற்றியிருக்கிறேன் என்பதை நீங்கள் கவனித்திருக்க வேண்டும், மாற்றத்திற்கான காரணம் நான் பின்னர் விளக்குகிறேன்.

எங்கள் பயன்பாடு செல்சியஸிலிருந்து பாரன்ஹீட்டிற்கு மாறுகிறது மற்றும் வைஸ்-நேர்மாறாக மட்டுமே தெரியும். எனவே, மாற்றுவதற்கு இன்னும் சில செயல்பாடுகளை அல்லது அலகுகளைச் சேர்ப்பது எப்படி? அவ்வாறு செய்ய, UIPickerView இல் இன்னும் ஒரு கூறுகளைச் சேர்க்க வேண்டும், இது பொருத்தமான தேர்வைத் தருகிறது, தேர்வாளரின் முதல் கூறுகளில் ஒரு அலகு தேர்ந்தெடுக்கப்பட்டால்.

ஒரு தேர்வியை இரண்டு கூறுகளாகப் பிரிக்க, நாம் ஒரு புதிய NSArray data2 ஐச் சேர்க்க வேண்டும், இது இரண்டாவது கூறுக்கான தரவை வைத்திருக்கும். மேலும், எங்கள் இரண்டு கூறுகளையும் குறிக்கும் இரண்டு மாறிலிகளை வரையறுக்கவும். இங்கே, இடது கூறு 0 ஆகவும், நிரலாக்கத்தின் எளிமைக்கு வலது கூறு 1 ஆகவும் அறிவிக்கப்படுகிறது.

உங்கள் ViewController.h கோப்பு தெரிகிறது

அகல முதல் தேடல் வழிமுறை சூடோகுறியீடு
# இறக்குமதி # டேட்டா 1 காம்பை வரையறுக்கவும் 0 # டேட்டா 2 காம்பை வரையறுக்கவும் 1 இன்டர்ஃபேஸ் வியூ கன்ட்ரோலர்: யுஐவியூ கண்ட்ரோலர் ropproperty (வலுவான, இயற்கையற்ற) strong, nonatomic) NSArray * data2 ropproperty (strong, nonatomic) IBOutlet UILabel * ResultLabel ropproperty (strong, nonatomic) IBOutlet UIButton * convert - (IBAction) Convert: (UIButton *) அனுப்புநர் - (IBAction) பின்னணி பட்டன்: (ஐடி) அனுப்புநர் .end

இப்போது ViewDidLoad () முறையில் வரிசை தரவு 2 ஐ வரையறுக்கவும். இப்போது எங்களிடம் தரவு மூலங்கள் இரண்டுமே இருப்பதால், தேர்வாளருக்கான குறியீட்டை நாம் எழுதக்கூடிய வகையில் இருக்க வேண்டும், இது ஒரு பொருளைத் தேர்ந்தெடுப்பவரின் முதல் கூறுகளிலிருந்து தேர்ந்தெடுக்கும்போது, ​​இரண்டாவது கூறு தானாகவே தொடர்புடைய மதிப்புக்கு மாற்றப்படும். இரண்டாவது கூறு முதல் தேர்வு செய்வதைப் பொறுத்தது.
இதற்காக, விசைகள் மற்றும் மதிப்புகளை சேமிக்கும் ஒரு அகராதியை நாம் வரையறுக்க வேண்டும். விசைகள் தேர்வாளரின் முதல் கூறுடன் தொடர்புடைய தரவைக் கொண்டிருக்கின்றன, மேலும் மதிப்புகள் தேர்வாளரின் இரண்டாவது கூறுடன் தொடர்புடைய தரவைக் கொண்டுள்ளன.

- (வெற்றிடத்தை) viewDidLoad super [super viewDidLoad] // பார்வையை ஏற்றிய பின் எந்த கூடுதல் அமைப்பையும் செய்யுங்கள், பொதுவாக ஒரு முனையிலிருந்து. _data1 = [NSArray arrayWithObjects: Cells 'செல்சியஸ்', @ 'பாரன்ஹீட்', @ 'மீட்டர்', @ 'சென்டிமீட்டர்', இல்லை] தரவு 2 = [NSArray arrayWithObjects: Cent 'சென்டிமீட்டர்', @ 'மீட்டர்', @ 'பாரன்ஹீட்', @ 'செல்சியஸ்', இல்லை] அகராதி = [என்.எஸ்.டி அகராதி வித்ஆப்ஜெக்ட்ஸ்ஆண்ட்கீஸ்: C 'செல்சியஸ்', @ 'ஃபாரன்ஹீட்', @ 'ஃபாரன்ஹீட்', C 'செல்சியஸ்', @ 'மீட்டர்', Cent 'சென்டிமீட்டர்', @ 'மீட்டர் ', இல்லை] self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: (@' bg2.png ')]]}

இப்போது, ​​தரவு மூலத்தை மாற்ற வேண்டும் மற்றும் தற்போதைய தேர்வாளரின் முறைகளை பின்வருவனவற்றிற்கு வழங்க வேண்டும், இதனால் இரு கூறுகளிலும் தரவு நிரப்பப்பட்டுள்ளது.

- (NSInteger) numberOfComponentsInPickerView: (UIPickerView *) pickerView {return 2} - (NSInteger) pickerView: (UIPickerView *) pickerView numberOfRowsInComponent: (NSInteger) கூறு {if (கூறு) {திரும்ப [self.data2 count]} - (NSString *) pickerView: (UIPickerView *) pickerView titleForRow: (NSInteger) for for Component: (NSInteger) கூறு {if (கூறு == data1comp) {திரும்ப [self.data1 objectAtIndex: row]} திரும்பவும் [self.data2 objectAtIndex: row]} - (வெற்றிடத்தை) pickerView: (UIPickerView *) pickerView didSelectRow: (NSInteger) in inComponent: (NSInteger) கூறு {[self backgroundButton: 0] if (கூறு == data1comp) {NSString * data11 = [_ data1 objectAtIndex: row] NSArray * a = [அகராதி பொருள்ForKey: data11] secondrow = [self.data2 indexOfObject: a] [_picker2 selectRow: secondrow inComponent: data2comp அனிமேஷன்: YES] [_picker2 தேர்ந்தெடுக்கப்பட்ட dataComponent2 = வரிசை}}

இங்கே எங்கள் didSelectRow () முறையில், முதல் கூறுகளின் தேர்ந்தெடுக்கப்பட்ட மதிப்பைப் பெறுகிறோம், பின்னர் அதை அகராதியின் ஆப்ஜெக்ட் ஃபோர்கே () முறைக்கு வாதமாக அனுப்புகிறோம், மேலும் விசையின் தொடர்புடைய மதிப்பைப் பெறுவோம். இரண்டாவது வரிசையில் அதாவது தரவு 2 இல் உள்ள மதிப்பிற்கான தொடர்புடைய நிலையைக் கண்டுபிடிக்க, வரிசையின் indexOfObject () முறையைப் பயன்படுத்துகிறோம் மற்றும் முடிவை ஒரு முழு மதிப்பில் சேமிக்கிறோம்.
இந்த முழு எண் மதிப்பை நாங்கள் தேர்ந்தெடுக்கும் முறைக்கு தேர்வு செய்க வரிசை: வரிசை inComponent: கூறு () முறை. ReloadComponent () ஐப் பயன்படுத்தி பிக்கரின் கூறுகளை மீண்டும் ஏற்றவும்.
இதைச் செய்தவுடன், முதல் கூறுகளிலிருந்து ஒரு பொருளைத் தேர்ந்தெடுக்கும்போது, ​​அதனுடன் தொடர்புடைய உருப்படி தேர்வாளரின் இரண்டாவது கூறுகளில் தேர்ந்தெடுக்கப்படும்.

DoSelectRow () க்கான குறியீடு

-. a = [அகராதி பொருள் ஃபோர்கே: தரவு 11] செகண்ட்ரோ = [self.data2 indexOfObject: a] [_picker2 selectRow: secondrow inComponent: data2comp animated: YES] [_picker2 reloadComponent: data2comp] தேர்ந்தெடுக்கப்பட்ட மதிப்பு = தரவு 11 தேர்ந்தெடுக்கப்பட்ட வரிசை = வரிசை}}

இப்போது பயன்பாட்டை இயக்கி, தேர்வுசெய்தவர் எதிர்பார்த்தபடி செயல்படுகிறாரா என்று பாருங்கள்.

வோய்லா! அது வேலை செய்கிறது!

எனவே எங்கள் மாற்று பொத்தானை தொடர்ந்து குறியிடுவோம். முந்தைய தேர்வாளருக்கு செல்சியஸ் மற்றும் பாரன்ஹீட் பொருந்த இரண்டு மதிப்புகள் மட்டுமே இருந்தன, பின்னர் முடிவு கணக்கிடப்பட்டது. ஆனால் இப்போது செல்சியஸ், பாரன்ஹீட், மீட்டர் மற்றும் சென்டிமீட்டர் ஆகிய நான்கு மதிப்புகள் உள்ளன. எனவே நான் ஒரு சுவிட்ச் அறிக்கையைப் பயன்படுத்தினேன், அது தேர்ந்தெடுக்கப்பட்ட வரிசை மாறியின் அடிப்படையில் மதிப்பைக் கணக்கிடுகிறது.

-. 1.8) + 32 பிரேக் வழக்கு 1: // ஃபாரன்ஹீட் முதல் செல்சியஸ் ரெஸ் = (வால் -32) / 1.8 பிரேக் வழக்கு 2: // மீட்டர் முதல் சென்டிமீட்டர் ரெஸ் = வால் * 100 பிரேக் கேஸ் 3: // சென்டிமீட்டர் முதல் மீட்டர் ரெஸ் = வால் * 0.01 பிரேக் இயல்புநிலை: res = 0.0} NSString * final = [NSString stringWithFormat:% '%. 02f', res] _ResultLabel.text = final}

நீங்கள் பயன்பாட்டை இயக்கினால், எல்லாம் சரியாக செயல்படுவதை நாங்கள் காணலாம்.

இப்போது, ​​எங்கள் பயன்பாட்டில் ஏற்படக்கூடிய விதிவிலக்குகளை நாங்கள் சரிபார்க்கலாம். எடுத்துக்காட்டாக, உரை பெட்டியில் மதிப்பு இல்லை. அல்லது செல்சியஸிலிருந்து மீட்டர் அல்லது சென்டிமீட்டராக மாற்ற முயற்சிக்கிறோம், இது உண்மையில் சாத்தியமில்லை. இந்த வகையான சூழ்நிலைகள் விதிவிலக்குகள் என்று அழைக்கப்படுகின்றன, மேலும் இதுபோன்ற பிழைகளைக் கையாள குறியீடு எழுதுவதன் மூலம் அதைத் தவிர்க்க வேண்டும்.

எங்கள் பயன்பாட்டை இயக்கும்போது ஏற்படக்கூடிய முதல் வகையான பிழையை தீர்ப்போம். அதாவது, உரைநிலையத்தில் மாற்றப்பட வேண்டிய எங்கள் மதிப்பை எழுதுவதை இழக்கிறோம். இந்த சூழ்நிலையில், மதிப்பை உள்ளிட எங்கள் பயனர்களை எச்சரிக்க வேண்டும், பின்னர் தொடரவும்.

இதற்காக நாம் UIAlertView ஐப் பயன்படுத்தலாம். ShowAlertWithMessage (NSString *) செய்தி என்ற பெயரில் ஒரு முறையை எழுதலாம். இந்த முறையில், நாம் ஒரு விழிப்பூட்டல் காட்சியை அறிவிக்கலாம், பின்னர் அதை நிகழ்ச்சி () முறையைப் பயன்படுத்தி காண்பிக்கலாம். முறைக்கான குறியீடு பின்வருமாறு இருக்கும்.

-. _ResultLabel.text=@ 'முடிவு இல்லை' [எச்சரிக்கை காட்சி காட்சி]}

இப்போது பயனர் மாற்று பொத்தானைக் கிளிக் செய்யும் போது மாற்றமாக அழைக்க வேண்டும். மதிப்பை உள்ளிடாமல் மாற்றத்தை செய்யக்கூடாது. எனவே மாற்றுவதற்கான முறை வரையறையில், உரைப்பகுதியின் நீளம் பூஜ்ஜியத்தை விட அதிகமாகவோ அல்லது சமமாகவோ இருக்கிறதா என்று சோதிக்க வேண்டும். அது இருந்தால் மாற்றத்தை செய்யுங்கள், இல்லையெனில் விழிப்பூட்டலைக் காண்பி. எனவே, மாற்று பொத்தான் குறியீடு இப்படி இருக்கும்:

- (IBAction) மாற்று: (UIButton *) அனுப்புநர் {if ([_ ValueTextField.text length]<= 0) { [self showAlertWithMessage:@' Please enter the value'] } else { float res=0.0 float val=[_ValueTextField.text floatValue] NSLog(@'value %f',val) switch(selectedRow) { case 0:// Celsius to Fahrenheit res=(val*1.8)+32break case 1: // Fahrenheit to Celsius res=(val-32)/1.8break case 2: // meter to centimeter res= val*100 break case 3://centimeter to meter res=val*0.01 break default: res=0.0 } NSString *final= [NSString stringWithFormat:@'%.02f',res] _ResultLabel.text = final } }

இப்போது பயன்பாட்டை இயக்கவும் மற்றும் உரை புலத்தில் மதிப்புகளை உள்ளிடாமல் மாற்று பொத்தானைக் கிளிக் செய்ய முயற்சிக்கவும்.

முதல் கூறுகளின் மதிப்பு UIPickerView இன் இரண்டாவது கூறுகளில் உள்ள மதிப்புடன் பொருந்தவில்லை என்றால் ஏற்படக்கூடிய இரண்டாவது வகை விதிவிலக்கு. இதற்காக, இரண்டாவது கூறுகளின் தற்போதைய தேர்ந்தெடுக்கப்பட்ட கூறு வரிசை மதிப்பு முறையின் didSelectRow () பிரதிநிதியால் வழங்கப்பட்ட வரிசை மதிப்பின் மதிப்புக்கு சமமானதா என்பதை நாங்கள் சரிபார்க்கிறோம். நிபந்தனை பொருந்தவில்லை என்றால், மாற்றம் சாத்தியமில்லை, மதிப்புகள் பொருந்தினால் மாற்றத்தை செய்யலாம்.

இந்த தர்க்கத்தை நாம் பின்வருமாறு செயல்படுத்தலாம்,

- (IBAction) மாற்று: (UIButton *) அனுப்புநர் {if ([_ ValueTextField.text length]<= 0) { [self showAlertWithMessage:@' Please enter the value'] } else { _ResultLabel.textColor= [UIColor blackColor] float res=0.0 NSInteger n =[_picker2 selectedRowInComponent:data2comp] if(n==secondrow) { float val=[_ValueTextField.text floatValue] NSLog(@'value %f',val) switch(selectedRow) { case 0:// Celsius to Fahrenheit res=(val*1.8)+32break case 1: // Fahrenheit to Celsius res=(val-32)/1.8break case 2: // meter to centimeter res= val*100 break case 3://centimeter to meter res=val*0.01 break default: res=0.0 } NSString *final= [NSString stringWithFormat:@'%.02f',res] _ResultLabel.text = final } else { // code for displaying error. _ResultLabel.textColor= [UIColor redColor] _ResultLabel.text = @'Result cannot be calculated' } }

இப்போது பயன்பாட்டை இயக்கவும், முதல் கூறுகளில் நீங்கள் தேர்வு செய்த பிறகு இரண்டாவது கூறுகளின் மதிப்பை மாற்றுவதன் மூலம் பார்க்கவும்.

பிழை செய்தியை நீங்கள் காணலாம், இதன் விளைவாக கணக்கிட முடியாது. பிழை செய்தி அதே முடிவு லேபிளில் அச்சிடப்பட்டதையும், செய்தி நீளமானது என்பதையும் நீங்கள் கவனிப்பீர்கள். எனவே இதனால்தான் முந்தைய நோக்குநிலையிலிருந்து லேபிள் கீழே நகர்த்தப்பட்டது.

எனவே, எங்கள் மாற்று பயன்பாடு முடிந்தது. உங்கள் விருப்பப்படி பயன்பாட்டிற்கு கூடுதல் செயல்பாட்டைச் சேர்க்கலாம் மற்றும் உங்கள் படைப்பாற்றலுக்கு ஏற்ப அதை இன்னும் அழகாக மாற்றலாம்.

எங்களுக்கு ஒரு கேள்வி கிடைத்ததா? கருத்துகள் பிரிவில் அவற்றைக் குறிப்பிடுங்கள், நாங்கள் உங்களைத் தொடர்புகொள்வோம்.

தொடர்புடைய இடுகைகள்: