loading...

مرجع تخصصی بروزترین مقالات طراحی اپلیکیشن

بازدید : 44
يکشنبه 27 خرداد 1403 زمان : 12:06

برای واکنش آرم دادن به تعیین مخاطب ، طراحی اپلیکیشن در مشهد ما می بایست یک نماینده طراحی کنیم که بر پایه ی با پروتکل های UIImagePickerControllerDelegate و UINavigationControllerDelegate باشد. اشکار میباشد که NewRecipeViewController بایستی تحت عنوان شیء نماینده تهیه گردد. در فولدر NewRecipeViewController.h رابط کاربری را بر طبق کد پایین تغییر‌و تحول میدهیم:

@interface NewRecipeViewController : UITableViewController
پوشه NewRecipeViewController.m را گشوده کرده و کد ذیل را به آن اضافه می‌کنیم:

- (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {

UIImage *originalImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
self.recipeImageView.image = originalImage;

[picker dismissViewControllerAnimated:YES completion:nil];
}
زمانی که مخاطب تصویر را از گالری گزینش می نماید ، مشی didFinishPickingMediaWithInfo از نماینده فراخوانی میشود و یک شیء NSDictionary دربردارنده رسانه (تصویر یا این که ویدئو) و داده های مربوطه را منتقل می کند. سوای قابلیت و امکان editing که غیر فعال میباشد ، قادر خواهیم بود تصویر تعیین گردیده از info dictionary را با به کارگیری از کلید UIImagePickerControllerOriginalImage ، به دست بیاوریم. تصویر تعیین گردیده ، بعد به image view مرتبط با newrecipe ، اختصاص می‌یابد.

نکته: در حالتی‌که قابلیت و امکان editing ، فعال باشد ، می شود به تصویر دستکاری گردیده از روش کلید UIImagePickerControllerEditedImage ، دسترسی یافت.

در حالتی‌که نرم افزار را مجدد جاری ساختن کنیم ، می بایست بتوانیم تصویر فرمان پخت را گزینش نماییم.

هندل کردن فیلد متن
در‌حالتی که از تمپلت source code که ما ساخته ایم ، استعمال می‌کنید ، فیلدهای متنی (text field) را ما به طور از پیش تشکیل‌شده در تمپلت قرار داده و آن‌ها‌را به کدهای مربوطه ، رابطه داده ایم. فیلدهای متنی برای داده ها گروه امر پخت ها به کار گیری میگردند ، که دربردارنده اسم فرمان پخت ، برهه زمانی مجال مهیا سازی ، مواد اول میباشد که بوسیله استفاده کننده کامل شدن می گردند. فیلد مواد اول یک حرفه comma-delimited میباشد که هر گزینه ، با کاما از سایر مستقل میشود. برای بی آلایش نگه داشتن اپلیکیشن demo ، هیج اعتبار سنجی برای ورودی ها ایفا نمیشود.

ما هم اینگونه ، UITextFieldDelegate را در تمپلت پروژه طراحی کردیم. شیء UITextField وقتی که رخدادهای خاص صورت می‌دهد ، به سیاق UITextFieldDelegate مطلوب ، پیام میدهد. درباره ی این اپلیکیشن ، ما می‌خواهیم که کیبورد را وقتی که استفاده کننده کلید رجوع را ضربه میزند نهفته کند. این فعالیت را به راحتی می اقتدار ، با طراحی سیاق textFieldShouldReturn ، هنگامی که مخاطب کلید رجوع و برگشت در کیبورد را فشار می‌دهد اجرا بخشید.

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
آپلود کردن فرمان پخت در Parse Cloud
با پیکربندی اساسی که در رابط کاربری اجرا کردیم ، اینک قادر خواهیم بود وارد قسمت مهم این فراگیری بشویم. وقتی که استفاده کننده کلید “Save” را ضربه میزند ، نرم افزار سیاق “save:” را فراخوانی کرده و فرمان پخت تازه را به عنوان مثال تصویر فرمان پخت را در Parse cloud آپلود می کند. Parse SDK یک طریق بی آلایش برای آپلود کردن داده آماده می کند. ذخیره سازی داده در Parse حول شیء PFObject اجرا می‌گردد. همانطور که پیش از اینً اشاره کرده ایم ، هر شیء PFObject دربردارنده جفت های key-value از داده های سازگار با JSON میباشد.

در پوشه “NewRecipeViewController.m” سیاق “save:” را با کدهای ذیل ، طراحی میکنیم:

- (IBAction)save:(id)sender {
// Create PFObject with recipe information
PFObject *recipe = [PFObject objectWithClassName:@"Recipe"];
[recipe setObject:_nameTextField.text forKey:@"name"];
[recipe setObject:_prepTimeTextField.text forKey:@"prepTime"];

NSArray *ingredients = [_ingredientsTextField.text componentsSeparatedByString: @","];
[recipe setObject:ingredients forKey:@"ingredients"];

// Recipe image
NSData *imageData = UIImageJPEGRepresentation(_recipeImageView.image, 0.8);
NSString *filename = [NSString stringWithFormat:@"%@.png", _nameTextField.text];
PFFile *imageFile = [PFFile fileWithName:filename data:imageData];
[recipe setObject:imageFile forKey:@"imageFile"];

// Show progress
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Uploading";
[hud show:YES];

// Upload recipe to Parse
[recipe saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
[hud hide:YES];

if (!error) {
// Show success message
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Complete" message:@"Successfully saved the recipe" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];

// Notify table view to reload the recipes from Parse cloud
[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshTable" object:self];

// Dismiss the controller
[self dismissViewControllerAnimated:YES completion:nil];

} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Failure" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];

}

}];
}
برای انبار کردن Recipe object در cloud ، آغاز یک PFObject را با به کارگیری از کلاس “Recipe” ساخت و ساز می‌کنیم. همان گونه که در کد بالا (خط 3-8) دیده می شود ، PFObject بسیار مشابه به NSMutableDictionary ، فعالیت می نماید.

برای تصویر فرمان پخت ، به آسانی خواهیم توانست آن را با تبدیل کردن به NSData و آن‌گاه با به کارگیری از PFFile ذخیره نماییم. در اینجا ، ما تصویر اساسی را به داده JPEG ، با به کارگیری از UIImageJPEGRepresentation برمی گردانیم. زمانی که PFObject را تنظیمات کردیم ، میتوانیم اسلوب “”saveInBackground: را برای انبار کردن امر پخت فراخوانی نماییم. این مشی ، به صورت خود کار ، تصویر را آپلود کرده و امر پخت را ذخیره می کند. ولی برای هندل کردن عالی عملیات آپلود ، ما روال جایگزین دیگری ، به اسم “”saveInBackgroundWithBlock: را فراخوانی میکنیم. میتوانیم منطق مازاد دیگری را نیز برای برنامه آماده کنیم ، که بعداز اعمال بدون نقص عملیات ذخیره سازی ، انجام شود. در اپلیکیشن Demo ، خواهیم توانست یک پیام هشدار را برای ذکر کامل شدن عملیات ذخیره سازی اکران دهیم ، که درپی آن ، عملیات notify کردن view controller مهم برای آپلود دوباره فرمان پخت ها شکل میگیرد.

برای واکنش آرم دادن به تعیین مخاطب ، طراحی اپلیکیشن در مشهد ما می بایست یک نماینده طراحی کنیم که بر پایه ی با پروتکل های UIImagePickerControllerDelegate و UINavigationControllerDelegate باشد. اشکار میباشد که NewRecipeViewController بایستی تحت عنوان شیء نماینده تهیه گردد. در فولدر NewRecipeViewController.h رابط کاربری را بر طبق کد پایین تغییر‌و تحول میدهیم:

@interface NewRecipeViewController : UITableViewController
پوشه NewRecipeViewController.m را گشوده کرده و کد ذیل را به آن اضافه می‌کنیم:

- (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {

UIImage *originalImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
self.recipeImageView.image = originalImage;

[picker dismissViewControllerAnimated:YES completion:nil];
}
زمانی که مخاطب تصویر را از گالری گزینش می نماید ، مشی didFinishPickingMediaWithInfo از نماینده فراخوانی میشود و یک شیء NSDictionary دربردارنده رسانه (تصویر یا این که ویدئو) و داده های مربوطه را منتقل می کند. سوای قابلیت و امکان editing که غیر فعال میباشد ، قادر خواهیم بود تصویر تعیین گردیده از info dictionary را با به کارگیری از کلید UIImagePickerControllerOriginalImage ، به دست بیاوریم. تصویر تعیین گردیده ، بعد به image view مرتبط با newrecipe ، اختصاص می‌یابد.

نکته: در حالتی‌که قابلیت و امکان editing ، فعال باشد ، می شود به تصویر دستکاری گردیده از روش کلید UIImagePickerControllerEditedImage ، دسترسی یافت.

در حالتی‌که نرم افزار را مجدد جاری ساختن کنیم ، می بایست بتوانیم تصویر فرمان پخت را گزینش نماییم.

هندل کردن فیلد متن
در‌حالتی که از تمپلت source code که ما ساخته ایم ، استعمال می‌کنید ، فیلدهای متنی (text field) را ما به طور از پیش تشکیل‌شده در تمپلت قرار داده و آن‌ها‌را به کدهای مربوطه ، رابطه داده ایم. فیلدهای متنی برای داده ها گروه امر پخت ها به کار گیری میگردند ، که دربردارنده اسم فرمان پخت ، برهه زمانی مجال مهیا سازی ، مواد اول میباشد که بوسیله استفاده کننده کامل شدن می گردند. فیلد مواد اول یک حرفه comma-delimited میباشد که هر گزینه ، با کاما از سایر مستقل میشود. برای بی آلایش نگه داشتن اپلیکیشن demo ، هیج اعتبار سنجی برای ورودی ها ایفا نمیشود.

ما هم اینگونه ، UITextFieldDelegate را در تمپلت پروژه طراحی کردیم. شیء UITextField وقتی که رخدادهای خاص صورت می‌دهد ، به سیاق UITextFieldDelegate مطلوب ، پیام میدهد. درباره ی این اپلیکیشن ، ما می‌خواهیم که کیبورد را وقتی که استفاده کننده کلید رجوع را ضربه میزند نهفته کند. این فعالیت را به راحتی می اقتدار ، با طراحی سیاق textFieldShouldReturn ، هنگامی که مخاطب کلید رجوع و برگشت در کیبورد را فشار می‌دهد اجرا بخشید.

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
آپلود کردن فرمان پخت در Parse Cloud
با پیکربندی اساسی که در رابط کاربری اجرا کردیم ، اینک قادر خواهیم بود وارد قسمت مهم این فراگیری بشویم. وقتی که استفاده کننده کلید “Save” را ضربه میزند ، نرم افزار سیاق “save:” را فراخوانی کرده و فرمان پخت تازه را به عنوان مثال تصویر فرمان پخت را در Parse cloud آپلود می کند. Parse SDK یک طریق بی آلایش برای آپلود کردن داده آماده می کند. ذخیره سازی داده در Parse حول شیء PFObject اجرا می‌گردد. همانطور که پیش از اینً اشاره کرده ایم ، هر شیء PFObject دربردارنده جفت های key-value از داده های سازگار با JSON میباشد.

در پوشه “NewRecipeViewController.m” سیاق “save:” را با کدهای ذیل ، طراحی میکنیم:

- (IBAction)save:(id)sender {
// Create PFObject with recipe information
PFObject *recipe = [PFObject objectWithClassName:@"Recipe"];
[recipe setObject:_nameTextField.text forKey:@"name"];
[recipe setObject:_prepTimeTextField.text forKey:@"prepTime"];

NSArray *ingredients = [_ingredientsTextField.text componentsSeparatedByString: @","];
[recipe setObject:ingredients forKey:@"ingredients"];

// Recipe image
NSData *imageData = UIImageJPEGRepresentation(_recipeImageView.image, 0.8);
NSString *filename = [NSString stringWithFormat:@"%@.png", _nameTextField.text];
PFFile *imageFile = [PFFile fileWithName:filename data:imageData];
[recipe setObject:imageFile forKey:@"imageFile"];

// Show progress
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Uploading";
[hud show:YES];

// Upload recipe to Parse
[recipe saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
[hud hide:YES];

if (!error) {
// Show success message
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Complete" message:@"Successfully saved the recipe" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];

// Notify table view to reload the recipes from Parse cloud
[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshTable" object:self];

// Dismiss the controller
[self dismissViewControllerAnimated:YES completion:nil];

} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Failure" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];

}

}];
}
برای انبار کردن Recipe object در cloud ، آغاز یک PFObject را با به کارگیری از کلاس “Recipe” ساخت و ساز می‌کنیم. همان گونه که در کد بالا (خط 3-8) دیده می شود ، PFObject بسیار مشابه به NSMutableDictionary ، فعالیت می نماید.

برای تصویر فرمان پخت ، به آسانی خواهیم توانست آن را با تبدیل کردن به NSData و آن‌گاه با به کارگیری از PFFile ذخیره نماییم. در اینجا ، ما تصویر اساسی را به داده JPEG ، با به کارگیری از UIImageJPEGRepresentation برمی گردانیم. زمانی که PFObject را تنظیمات کردیم ، میتوانیم اسلوب “”saveInBackground: را برای انبار کردن امر پخت فراخوانی نماییم. این مشی ، به صورت خود کار ، تصویر را آپلود کرده و امر پخت را ذخیره می کند. ولی برای هندل کردن عالی عملیات آپلود ، ما روال جایگزین دیگری ، به اسم “”saveInBackgroundWithBlock: را فراخوانی میکنیم. میتوانیم منطق مازاد دیگری را نیز برای برنامه آماده کنیم ، که بعداز اعمال بدون نقص عملیات ذخیره سازی ، انجام شود. در اپلیکیشن Demo ، خواهیم توانست یک پیام هشدار را برای ذکر کامل شدن عملیات ذخیره سازی اکران دهیم ، که درپی آن ، عملیات notify کردن view controller مهم برای آپلود دوباره فرمان پخت ها شکل میگیرد.

نظرات این مطلب

تعداد صفحات : 1

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 795
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • بازدید امروز : 85
  • بازدید کننده امروز : 1
  • باردید دیروز : 327
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 927
  • بازدید ماه : 1206
  • بازدید سال : 5885
  • بازدید کلی : 39451
  • <
    پیوندهای روزانه
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    کدهای اختصاصی