loading...
طراحی وب سایت

hadi بازدید : 2 دوشنبه 28 مرداد 1392 نظرات (0)

 

 

کارهاي دستي

در اين قسمت مي بايست جملات و در واقع Quote هاي مورد علاقه تان را در داخل Array يا آرايه myQuotes ذخيره نماييد.

در viewDidLoad تکه کد زير را بعد از [super viewDidLoad]; اضافه طراحی وب سایت  نماييد. در اينجا مي توانيد جملات مورد علاقه خودتان را حتي به فارسي اضافه کنيد.

@"Nobody's perfect",

@"Can't see the woods for the trees",

@"Better to have loved and lost then not loved at all",

@"The early bird catches the worm",

@"As slow as a wet week"

];

در اينجا در واقع به myQuotes ليستي از جملات را مي دهيد. البته syntax اين کار شايد کمي برايتان عجيب باشد که مي بايست آن را توضيح دهم.

- self يک کلمه کليدي خاص است که نشان مي دهد منظور ما « همين کلاس » که بر رويش هستيم مي باشد – اين کلمه کليدي تقريبا شبيه this در زبان هاي برنامه نويسي ديگر است.

- شما مي توانيد به property هاي يک کلاس با گذاشتن نقطه بعد از اين کلمه کليدي دسترسي داشته باشيد. در اينجا self.myQuotes به شما اجازه دسترسي به property اي قبلا ساخته بوديد را مي دهد.

- براي ساخت يک Array ميانبر بسيار خوبي در Objective-C وجود دارد به اين شکل : @[ item1, item 2, item 3]

- هر عنصري در Array ما يک string است. براي ساخت string ها در Objective-C مي بايست آنها را با پيشوند @ بسازيم. اگر با زبان هاي برنامه نويسي ديگر کار کرده باشيد احتمال آن وجود دارد که به راحتي اين نکته را فراموش کنيد و برنامه شما درست کار نکند. پس اگر در برنامه تان از string استفاده کرديد مطمئن شويد که علامت @ را نيز قبل آن string گذاشته ايد.

خب حالا Array اي از جملات محبوبتان داريد و آماده هستيد. نوبت به آن مي رسد که يکسري کد براي آنکه بتوانيد جملات را به صورت تصادفي بر روي صفحه نشان دهيد به برنامه تان اضافه کنيد!

نوبت کار با Outlet هاست

شما هنوز رابط کاربري برنامه تان را نساخته ايد اما وقتي اين کار را انجام دهيد يک text view به برنامه تان اضافه خواهيد کرد که اين جملات را بتواند نشان دهد و يک button نيز خواهيد گذاشت تا با لمس کردن آن يک جمله تصادفي در آن text view به نمايش در بيايد.

براي نمايش يک جمله تصادفي بر روي صفحه? به دو چيز احتياج داريد – يک reference به text view تا بتوانيد متن روي آن را به درستي تنظيم نماييد و notification براي آنکه از لمس شدن button مطلع گرديد.

اما چگونه مي توان اتفاقاتي که بر روي رابط کاربري مي افتد را با کد ارتباط داد ؟ اين کار توسط دو کلمه کليدي خاص با نام IBOutlet و IBAction صورت مي گيرد!

بياييد ببينيم اين دو چه طور کار مي کنند. خب با IBOutlet شروع مي کنيم. تکه کد زير را به زير array ها در ViewController.h اضافه نماييد :

@property (nonatomic, strong) IBOutlet UITextView *quoteText;

در اينجا شما باز هم يک property مانند قبل تعريف کرده ايد اما اين بار براي کلاس UITextView و بر روي آن نيز يک کلمه کليدي خاص با نام IBOutlet گذاشته ايد.

IBOutlet به اين معني است که quoteText يک object است که مي تواند به يکي از عناصر رابط کاربري در فايل XIB متصل گردد تا view controller بتواند به property هاي آن عنصر دسترسي داشته و يا آنها را تغيير دهد. در اين مثال ما متن نشان داده شده بر روي کنترل UITextView را تنظيم خواهيم کرد اما مي توانيد به آساني رنگ? فونت? سايز و چيزهاي ديگر را نيز تغيير دهيد.

در اينجا تکه کد زير را بعد از ليست property ها اضافه نماييد :

- (IBAction)quoteButtonTappedid)sender;

اين کار يک method را مشخص کرده که در داخل اين کلاس پياده سازي خواهد شد. اين اولين باري است که شما تعريف يک method را در Objective-C مي بينيد. پس بايد تکه تکه آن را بررسي کنيم :

?- در ابتدا يک خط فاصله يا dash گذاشته ايد. اين کار بدين معناست که شما در حال تعريف يک instance method مي باشيد.

?- سپس value خروجي method خود را تعريف مي کنيد. اين method خاص IBAction را خروجي مي دهد که در واقع به شکل void تعريف شده است.

اين بدين معني است که اين method چيزي را خروجي نمي دهد. اما IBAction يک property خاص ديگر دارد – اين کلمه کليدي method شما را به شکلي علامت گذاري مي کند که مي توانيد آن را به يک action بر روي يک عنصر رابط کاربري متصل نماييد.

در اين مثال شما اين اتصالات را به شکلي انجام خواهيد داد که وقتي button لمس گردد اين method صدا شود.

 

?- سپس نام method را قرار مي دهيد که در اينجا quoteButtonTapped مي باشد.

?- سپس يک علامت دونقطه يا colon قرار داده و در داخل پرانتز نوع پارامتر اول را تعيين مي کنيد.

id يک تايپ خاص بوده که به معناي هر « object اي که از NSObject به ارث رسيده است » مي باشد.

معمولا هنگامي که callback هايي که button ها و يا ديگر control ها آنها را صدا مي کنند مي سازيد? آنها به عنوان اولين پارامتر هر buttol يا کنترلي که callback را فرستاده است مي فرستند. از آنجايي که نمي توانيد مطمئن باشيد از چه تايپي مي تواند باشد در اينجا id را قرار مي دهيد.

 

?- در آخر نيز نام پارامتر را قرار مي دهيد که در اينجا sender است.

اگر بيشتر از يک پارامتر داشته باشيد? مي توانيد قدم ? تا ? را چندين بار تکرار نماييد.

syntax نام گذاري method ها در Objective-C کمي غير معمول است اما وقتي به آن عادت کنيد از آن خوشتان خواهد آمد.

 

حال به فايل ViewController.m برويد تا پياده سازي method با نام quoteButtonTapped: را در آن انجام دهيد.

براي اين کار تکه کد زير را به اين فايل و قبل @end اضافه نماييد :

 

خب بياييد اين تکه کد را نيز خط به خط بررسي کنيم :

-(IBAction)quoteButtonTappedid)sender {

// 1 – Get number of rows in array

int array_tot = [self.myQuotes count];

// 2 – Get random index

int index = (arc4random() % array_tot);

// 3 – Get the quote string for the index

NSString *my_quote = self.myQuotes[index];

// 4 – Display the quote in the text view

self.quoteText.text = [NSString stringWithFormat: @"Quote:\n\n%@", my_quote];

}

?- ابتدا تعداد عناصر موجود در array تان را پيدا مي طراحی وب سایت   کنيد.

اينجا نيز اولين باري است که صدا شدن method ها را در Objective-C مي بينيد و syntax آن کمي عجيب است – ابتدا يک براکت باز مي کنيد و سپس نام object اي که بر روي آن مي خواهيد method را صدا کنيد مي آوريد ( self.myQuotes ) ? سپس نام method اي که مي خواهيد صدا کنيد مي آيد ( count ).

در آخر نيز صدا زدن method را با بستن براکت به پايان مي رسانيد.

توجه کنيد که اين method هيچ پارامتري دريافت نمي کند – در قدم چهارم مثالي از method اي که پارامتر دريافت کند را خواهيد ديد.

 

?- سپس از function اي به نام arc4random استفاده کرده ايد تا يک عدد اتفاقي يا random براي شما بسازد.

arc4random() يک function معمولي C و نه method مي باشد و بنابراين از syntax پرانتزي که از قبل مي شناسيد و دوستش داريد استفاده مي کنيد.

در اينجا چون مي خواهيد يکي از جملاتتان را به صورت اتفاقي انتخاب کنيد مي بايست بزرگترين عدد ممکن تعداد رديف ها در array باشد و پايين ترين مقدار نيز صفر خواهد بود.

در Objective-C مانند بسياري زبان هاي ديگر اولين رديف در array صفر مي باشد و ? نيست.

 

?- سپس شما يک عنصر را در myQuotes پيدا مي کنيد. syntax جديد Objective-C به شما اين امکان را مي دهد که به عناصر داخل يک NSArray توسط دادن شماره رديف آن در داخل براکت دسترسي پيدا کنيد.

?- در آخر? از method اي با نام stringWithFormat استفاده مي کنيد تا string خروجي را فرمت دهي کنيد تا ابتدا يک ليبل نشان داده شده و سپس به سر خط بعدي برود تا جمله نوشته شود.

در اين قسمت از جايگذاري متغيرها مانند printf در C/C++ استفاده مي شود. %f براي float و %d براي integer و %@ براي object هاي Objective-C.

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

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 14
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 7
  • آی پی دیروز : 1
  • بازدید امروز : 1
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 1
  • بازدید ماه : 3
  • بازدید سال : 5
  • بازدید کلی : 217