Cocoa & iPhone Development : Add UIButton in Runtime

มกราคม 15, 2009 at 8:18 am 1 ความเห็น

แบบภาษาไทย

สำหรับผู้ที่ศึกษาการเขียนโปรแกรมด้วย Cocoa Framework หรือ Cocoa Touch Framework และ Objective-C ส่วนมากจะคุ้นเคยกับการสร้างปุ่มโดยการวางลงไปในหน้า View ของเราที่อยู่ในหน้า Interface Builder แล้วก็สร้าง Action ขึ้นมาในคลาสแล้วก็ลากเชื่อม Action กับปุ่มที่เราสร้างขึ้นใช่มั้ยครับ

อันนั้นเป็นวิธีการสร้างปุ่มแบบ Static ใน Compile-Time ซึ่งไม่มีอะไรยุ่งยากซับซ้อน เพราะตัว XCode และ IB สามารถทำงานร่วมกันได้เป็นอย่างดีอยู่แล้ว ข้อดีของมันคือง่ายไม่ซับซ้อน แต่บางครั้งเราอาจต้องการปุ่มที่มีความยืดหยุ่นมากกว่า  เช่น ปุ่มที่สามารถเลือกได้ว่าในขณะนั้นมันควรเลือกใช้ Method ไหนกันแน่ภายใต้เงื่อนไขนั้นๆ ดังนั้น ใน Entry นี้จะกล่าวถึงการสร้างปุ่มที่จะถูกสร้างและแสดงผลในช่วง Runtime

อันนี้จะเป็นตัวอย่างการสร้างปุ่มใน UIKit ของ Cocoa Touch Framework นะครับ

เริ่มต้นการสร้างปุ่มก่อนเป็นอย่างแรก

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

เท่านี้เราก็จะได้ปุ่มแบบ RoundedRect แสดงผลอยู่หน้าหลักของเราแล้วนะครับ เราสามารถที่จะปรับขนาดและตำแหน่งที่ต้องการได้ โดยเซต property frame ของปุ่มของเรา หรือคุณสมบัติอื่นๆก่อนนำไปแสดงผลได้นะครับ ซึ่งสามารถดูได้ในหน้า Reference ตัวอย่างเช่นการเซต property frame ทำแบบนี้นะครับ

button.frame = CGRectMake( พิกัด X, พิกัด Y, ความกว้าง, ความสูง)

เราได้ปุ่มมาแล้ว ต่อไปเป็นการกำหนดว่าปุ่มนั้นจะเรียก Method อะไรเมื่อถูกกด กำหนดแบบนี้ครับ

[button addTarget:self action:@selector(Method ที่ต้องการจะให้ทำ) forControlEvents:(UIControlEvent)แอคชั่นบนปุ่ม];

เอาละครับ เรากำหนดคุณลักษณะต่างๆเรียบร้อยแล้ว (อาจกำหนดคุณสมบัติอื่นๆได้อีก แต่ไม่ขอเขียนในนี้นะครับ) คราวนี้ขั้นตอนสุดท้ายก็คือ นำไปแสดงผล แบบนี้ครับ

[self.view addSubview:button];

เท่านี้เราก็ได้ปุ่มที่ถูกสร้างขึ้นในช่วง Runtime เรียบร้อยแล้วครับ ไม่ยากเลย

Happy Coding นะครับ.

In english version.

For the people who study about programming on “Cocoa Framework” or “Cocoa Touch Framework” and Objective-C will known how to create a button on a view of Interface Builder’s page. You’ll drag a button from Library and drag the line, connect between button and method in class which you created.

That solution is a way to create a static button in Compile-Time. It easy and not complex because XCode and IB can work good together. But sometime we’ll want a more flexible button such as button which can select a method under condition in each time. So, I’ll saying in this entry about a how to create a button in runtime.

This example is for UIKit on Cocoa Touch Framework/

At first. We must create a button.

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundRect];

now We got a button . We can customize many property about button such as size, position, title orimage and etc. You can read from reference document. Now, I’ll show you how to set frame(size and position) of button. Do like this.

button.frame = CGRectMake( XPosition, YPosition , Width, Height);

When we finished customize button. Next, We’re assigning which method that our button do when got an action from user. We do like this.

[button addTarget:self action:@selector(Method) forControlEvents:(UIControlEvent)Action];

Finally. We show our button on the view by this method.

[self.view addSubview:button];

Just only, We got a button which created on runtime . Very easy.

Happy Coding

Entry filed under: Cocoa Programming, Computer, iPhone Programming, Tips & Techniques. Tags: , , , , , , .

Book review : Magic of Thinking BIG – คิดใหญ่ไม่คิดเล็ก แค่เธอสงสัย – K-OTIC

1 ความเห็น Add your own

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


del.icio.us For iPhone dev

Post Calendar

มกราคม 2009
พฤ อา
« ธ.ค.   ก.พ. »
 1234
567891011
12131415161718
19202122232425
262728293031  

%d bloggers like this: