วันเสาร์ที่ 4 มิถุนายน พ.ศ. 2554

iPhone: UIActionSheet (2)

iPhone: UIActionSheet (2)
ต่อจากเมื่อวานในเรื่องของ UIActionSheet นะครับ วันนี้จะเป็นเรื่องของการเพิ่มปุ่มบน UIActionSheet โดยที่ข้อมูลของเราอยู่ในรูปของ อาเรย์ (NSArray) จากเดิมนั้นเราสามารถใส่ปุ่มอื่นๆ ใน UIActionSheet ได้โดยการสติงไปโดยตรงได้เลย แต่หากข้อมูลเราเป็นอาเรย์หละ เราจะทำการเพิ่มปุ่มใน UIActionSheet อย่างไรมาดูกันครับ



ขั้นตอนทั้งหมดมีอยู่ 3 ขั้นตอนนะครับ คือ การสร้าง UIActionSheet ขึ้นมาก่อน การเพิ่มปุ่มเข้าไป และการกำหนด index ให้กับปุ่ม Cancel มีรายละเอียดดังต่อไปนี้

1) การสร้าง UIActionSheet เราจะสร้างแบบไม่มีปุ่มอะไรเลยนะครับ

[sourcecode langauge="obj-c"]
UIActionSheet *actSheet = [[UIActionSheet alloc] initWithTitle:@"Demo UIActionSheet (2) by adaydesign"
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[/sourcecode]

สังเกตว่าตัวอย่างของผมจะไม่มีปุ่มอะไรเลย นอกจากการกำหนด title นะครับ แต่เราสามารถสร้างได้อีกแบบด้วยดังนี้

[sourcecode langauge="obj-c"]
UIActionSheet *actSheet = [[UIActionSheet alloc] init];
[actSheet setTitle:@"Demo UIActionSheet (2) by adaydesign"];
[/sourcecode]

2) การเพิ่มปุ่มที่เราต้องการเข้าไป โดยสิ่งที่กำหนดคือ เรามีข้อมูลอยู่ในอาเรย์ ที่จะเพิ่มเป็นปุ่ม เขียนโค้ดได้ดังนี้

[sourcecode language="obj-c"]
NSArray *myButtonsName = [[NSArray alloc] initWithObjects:@"MY Button 1",@"MY Button 2",@"MY Button 3",@"MY Button 4",nil];
for (NSString *bTitle in myButtonsName) {
[actSheet addButtonWithTitle:bTitle];
}
[/sourcecode]



3) เพิ่มปุ่ม Cancel และกำหนด index ของปุ่ม Cancel

เพิ่มเติมนะครับ ปุ่ม Cancel เอาไว้เพื่อให้ผู้ใช้ที่ไม่ต้องการเลือกเมนูใดเลย กด เพื่อปิด UIActionSheet แต่หากเราต้องการบังคับให้ผู้ใช้เลือกเมนูใดเมนูหนึ่ง ไม่จำเป็นต้องมีปุ่ม Cancel ก็ได้นะครับ

โค้ดการเพิ่มปุ่ม Cancel จะเหมือนกับการเพิ่มปุ่มทั่วไปใส่ UIActionSheet และก็กำหนด index ของปุ่ม Cancel เพื่อที่ UI จะแสดงเป็นปุ่มสีเทาเข้ม ตามโค้ด

[sourcecode language="obj-c"]
[actSheet addButtonWithTitle:@"Cancel"];
[actSheet setCancelButtonIndex:[myButtonsName count]];
[/sourcecode]


ภาพทางซ้ายมือ เป็นภาพเมื่อเราเพิ่มปุ่ม Cancel เข้าไปแต่ยังไม่กำหนด index ของปุ่ม Cancel ทำให้สีของปุ่มนั้นไม่เด่นออกมา แต่หากเรากำหนด index ของปุ่ม Cancel แล้ว ผลลัพธ์จะออกมาเหมือนภาพด้านขวามือ คือปุ่มจะมีสีเข้มขึ้นทำให้เห็นได้ชัดเจนกว่าปุ่มอื่นๆ
เป็นอย่างไรบ้างครับสำหรับการเพิ่มปุ่มบน UIActionSheet จากอาเรย์ ทำได้อย่างง่ายๆ เลยใช่มั้ยครับ ส่วนในบทความต่อไปจะเป็นเรื่องเกี่ยวกับการกำหนดฟังก์ชั่นเมื่อผู้ใช้กดปุ่มแต่ละปุ่มที่เราสร้างเอาไว้นั้น เราจะทำการตรวจสอบได้อย่าง ติดตามได้ในบทความหน้านะครับ สำหรับบทความนี้เพื่อนๆ คนไหนมีข้อสงสัย หรือแนะนำก็คอมเม้นไว้ได้เลยนะครับ

บทความที่เกี่ยวข้อง

adaydesign :)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น