iPhone/iPad Tutorials
iPhone Tutorials
หน้านี้จะรวบรวมบทความที่เกี่ยวข้องกับการศึกษาการเขียนโปรแกรมบน iPhone/iPad ให้ได้เลือกศึกษากันนะครับ โดยผมได้แบ่งออกเป็นหมวด 4 หมวด ได้แก่ Basic Tutorial, Intermediate Tutorials, Advance Tutorials และ Website Tutorials โดยหลักการแบ่งหมวดนั้นยึดจากหนังสือ iPhone Programming หลายๆ เล่มครับ บทความทั้งหมดนี้เรียบเรียงมากจาก หมวด [DEV] [Link] iPhone และ Recommend Website
หากเพื่อนๆ คนไหนมีข้อแนะนำเพิ่มเติม หรืออยากให้เพิ่มเรื่องอะไรเข้ามาใน Tutorial นี้ สามารถคอมเม้นเข้ามาได้นะครับ :)
เพื่อเพิ่มความเข้าใจในเนื้อหาของบทความต่างๆ ผมจะมีสัญลักษณ์ของ
(การใช้งาน Xcode 4.2) ,
(รองรับ iOS 5) และ
(มีวีดีโอ) เอาไว้หลังชื่อบทความนะครับ จะได้รู้ว่าอันไหนจะรองรับเทคโนโลยีใหม่ๆ บ้างเน้อ
iPhone/iPad Basic Tutorials
Xcode 4.5 (Developer Preview in June 2012)
Xcode 4.2
- Xcode 4.2 : XCode4 Thai User Guide # 2 by adaydesign
- Xcode 4.2 : Automatic Reference Counting Conversion
- Xcode 4.2 : Set Orientation Support
- Xcode 4.2 : Beginning to using Storyboard Segue
- Xcode 4.2 : Storyboard Segue # 2
- Xcode 4.2 : Custom Storyboard Segue
- Xcode 4.2 : Storyboard Instantiate ViewController
- Xcode 4.2 : Conclusion of Storyboard Segue
Xcode4
- iPhone: XCode4 Adding New Existing Frameworks
- iPhone: XCode4 Create .ipa File
- iPhone: XCode4 Assistant Editor
- iPhone: วิธีการใช้งาน Xcode สำหรับการพัฒนาแอพพลิเคชั่นบนไอโฟน
- iPhone: วิธีการใช้งาน Xcode สำหรับการพัฒนาแอพพลิเคชั่นบนไอโฟน (2)
- iPhone: วิธีการใช้งาน Xcode สำหรับการพัฒนาแอพพลิเคชั่นบนไอโฟน (3)
Simulator
NSString
- iPhone: NSArray initWithObjects
- iPhone: Capital Letter
- iPhone: Split a String into an Array
- iPhone: NSString trimming
- iPhone: stringByAddingPercentEscapesUsingEncoding
- iPhone: How to check if it contains partial value
- iPhone: stringByReplacingOccurrencesOfString: withString: options: range:
NSArray
Basic UI: View Label Button Text
- iPhone: How to Create Your First iPhone Application
- iPhone: Make Overlay Round UILabel
- iPhone: Resize UITextView follow content
- iPhone: Using the UIScrollView
- iPhone: Creating a Splash Screen
- iPhone: Creating a Splash Screen (Fade Out Style)
Event
Table View
- iPhone: UITableView Tutorial
- iPhone: Configuration Xib file of UITableView with using XCode4
- iPhone: Configuration Xib file of UITableView with using XCode4 (2)
- iPhone: Basic UITableView Example
- iPhone: Basic UITableView Example using Custom Class
Navigation Controller
Activity Indicator
UIScrollView
- iPhone: Slide Photo Gallery
- iPhone: Slide Photo Gallery (2)
- iPhone: UIScrollView Delegate for Slide Photo Gallery
- iPhone: Zoom Image with UIScrollView
UIActionSheet
UIWebView
NSURLErrorDomain
——————————————————————————————————–
iPhone/iPad Intermediate Tutorials
Custom Table View
- iPhone: UITableViewCell set Accessory type
- iPhone: Setting scroll position in UITableView
- iPhone: Hiding accessory of UITableViewCell
- iPhone: Custom UITableViewCell and IBAction
- Link: iPhone disclosure button and keyboard
- iPhone: Custom UITableViewCell AccessoryView Button
TabBar
- iPhone: Building an iPhone App Combining Tab Bar, Navigation and Tab
- iPhone: Adding a Background Image of UITabBar
- iPhone: Creating an iPhone Multiview Application using the Tab Bar
- iPhone: Change icon’s color of UITabBarItem
UIImage
- iPhone: Crop Image
- iPhone: Display Image form URL retrieved from ALAssets in iPhone
- iOS Dev : Zoom & Rotation UIImageView using Gesture Recognizer
Image Picker
- iPhone: Get image path from UIImagePickerControllerSourceTypeCamera
- iPhone: Get Image Path from UIImagePickerController
- iPhone: Get Location from UIImagePickerController Type PhotoLibrary
Camera
Dial Number
Database
Connect Server and Internet
- iPhone: Post Image to web (Demo)
- iPhone: Send Thai Language to Web Service using stringByAddingPercentEscapesUsingEncoding
- iPhone: UIImage load from URL
- iPhone: Contents of textfile on URL to be displayed iphone
- iPhone: Detecting Network Status
- iPhone: Post Image to web
Webservice
MapKit and Location based
- iPhone: Getting Your Location
- Link: iPhone MapKit Tutorial
- iOS Dev : Change Google Map’s Theme using CloudMade for iOS App
Share Social Network
- iPhone: Easy Sharing using ShareKit (Demo)
- Link: iPhone Easy Sharing using ShareKit
- Link: iPhone FBConnect: Facebook Connect Tutorial
Media Player Framework
——————————————————————————————————–
iPhone/iPad Advance Tutorials
iAd and AdMob
Augmented Reality
PhoneGap
——————————————————————————————————–
iPhone/iPhone Website Tutorials
- Website: iCode[Blog]
- iPhone: iPhone SDK Examples
- Website: iPhone Tutorials for Programers
- Website: khomkrit | Objective-C iPhone iPad iOS tutorial and note
- Website: iPhone Tutorial | iPhone iOS4 iPad SDK Development & Programming Blog
- Website: iPhone SDK Tutorials
- Website: iPhone Application | Game Programming Development
- Website: raywenderlich.com : Tutorial for iOS Developer
- Website : junaio Quickstart Guides (Augmented Reality)
- Website : Learn & Master Cocos2D Game Development
——————————————————————————————————–
iPhone/iPhone Code
- Code iPhone: Resize UITextView follow content
- Code iPhone: Make Overlay Round UILabel
- Code iPhone: Crop UIImage
- Code iPhone: Flip Navigation Controller
- Code iPhone: Load Photo from Photos Album (Full Function)
- Code iPhone: Sort an Array of Custom Object using NSSortDescriptor
- Code iOS : Toggle UI Orientation
- Code iOS : Storyboard Instantiate ViewController
- Code iOS : Get pixel data from a UIImage (Cocoa Touch) or CGImage (Core Graphics)
———————————————————————————————————-
iOS Application Workshop
———————————————————————————————————-
update: 26/6/2012
adaydesign :)
โหวว ทำไว้เยอะมากๆ เลยครับ ขอบคุณครับ
ขอบคุณครับ หากต้องการการพัฒนาโปรแกรมของ iOS ในส่วนไหนเพิ่มเติมบอกมาได้เลยนะครับ :)
อยากทราบเรื่องของ การเขียนเกมส์ Cocos2D
พี่ขอถามอีกเรื่อง ว่าแล้วกรณีไหนใช้ view base กรณีไหนใช้ window basde หรือแล้วแต่เราอ่ะ
กรณีที่ใช้ window base ก็มีแค่ project template ที่ xcode ให้มา มันไม่รองรับสำหรับหน้าตาแอพของเรา เราจึงต้องทำขึ้นเองครับ
แต่ปกติเราก้อเลือกที่จะใช้ template ที่มีมาให้นั้นแหละ แต่เราต้องรู้ก่อนว่าเราจะทำอะไร มีฟังก์ชั่นอะไรบ้าง หน้าตาโปรแกรมเป็นยังไง เท่านั้นเอง
เนื่อหาในนี้ถือว่าเป็นแหล่งความรู้ชั้นดี ขอบคุณมากสำหรับการเผยแพร่ความรู้ให้นักพัฒนาใหม่ๆได้มาศึกษาข้อมูลน่ะค่ะ ออ แล้วน้องก็มีเรื่องถามหน่อยว่าถ้าเราสร้างแอพตัวหนึ่งขึ้นมา ที่มีการใช้ sqlite ด้วย แล้วตัวแอพมีเงื่อนไขที่ว่า ถ้าต่อเน็ตให้บันทึกข้อมูลลงใน server ภายนอกแทน แต่ถ้าไม่ต่อให้บันทึกใน sqlite แล้วค่อยไปอัพเดทอัตโนมัติตอนเปิดแอพคร่าวหน้าในกรณีต่อเน็ตด้วย ซึ่งฐานข้อมูลนี้จะต้องทำการ ซิงกัน เหมือนข้อมูลต้องมีการอัพเดทให้เหมือนกันตอนที่ต่อเน็ตนะค่ะ น้องเลยไม่ทราบว่ามันทำได้หรือเปล่า แล้วการที่ในตาราง sqltie มีข้อมูลเยอะจะทำให้แอพมันช้าด้วยหรือเปล่าค่ะ
การทำให้ข้อมูลซิงกันระหว่าง ฐานข้อมูลในเครื่องกับบนเซอร์เวอร์สามารถทำได้โดยการ กำหนดเวอร์ชั่นให้กับชุดข้อมูล นั้นๆ ครับ (เหมือนกันแพทเกมออนไลน์ที่จะเช็คเวอร์ชั่นก่อนดาว์นโหลดข้อมูลมา) จะเป็นแบบ text file ก็ได้หรือเก็บไว้ฐานข้อมูลก้อได้ โดยระบุว่า เวอร์ชั่นนี้ มี record ไหนถึงไหน พอเครื่องมือถือกดอัพเดท/อัพเดทอัตโนมัติ เราก้อแค่เช็คเวอร์ชั่นของชุดข้อมูลก่อน หากเวอร์ชั่นตรงกันก้อไม่ต้องอัพเดทอะไร แต่หากเวอร์ชั่นไม่ตรงกัน เราต้องโหลดดาต้าตัวใหม่มาให้ครับ
sqlite มีข้อมูลเยอะจะทำให้การ query ช้าแน่นอนครับ ยิ่งเรามี relationship หลายๆ ตาราง ยิ่งทำให้ช้าครับ
ส่วนมากด้าตาในเครื่องจะเก็บเฉพาะที่จำเป็นที่ต้องเก็บไว้เท่านั้น นอกนั้นก้อใช้วิธีอ่านแบบ feed ก็ได้ครับ
ผมจะพัฒนาการฝึกเขียนตัวอักษรไทยกับอังกฤษ จะเริ่มอ่านยังไงดีครับ มีข้อแนะนำไหมครับพี่ คือตอนนี้ยังไม่มีความรู้ด้านภาษา object C มากนัก แต่ C กับ java ได้แล้วครับ
เป็นการเขียนตามตัวปะแบบหนังสือหัดเขียนสมัยเด็กๆ ใช่มั้ยครับ
1 เริ่มแรกเลย ก็ศึกษา Objective-C ที่จะใช้เขียนบน iphone ipad ก่อนเลยครับ ศึกษาโครงสร้าง การประกาศตัวแปร การเรียกใช้ฟังก์ชั่น
2 การใช้ NSString NSArray จะได้ใช้บ่อย เน้นพื้นฐานเลยนะครับ
3 หัดใช้ Xcode ครับ จะเวอร์ชั่น 4.0 4.1 4.2 ก็ได้
4 เริ่มการใช้งาน View ต่างๆ เชื่อม View กับ โค้ด ให้คล่องครับ ใช้ทั้งการประกาศตัวแปร และลาก event
5 ใช้ ฟังก์ชั่น touch หรือ Gesture Recognizer ตัวนี้จะทำให้รู้ตำแหน่งของ นิ้วที่ touch บนหน้าจอ
6 เรื่อง การวาดรูป เส้น สี ต่างๆ ตัวอย่าง http://blog.effectiveui.com/?p=8105
7 ถ้าจะมีการเปรียบเทียบ ให้เขียนตามต้นแบบด้วย ก็ต้องรู้เรื่องการ รู้จำ pattern มีเทคนิคที่ง่ายๆ จนถึงแบบยากครับ ลองหาดูครับ pattern recognition
สำคัญสุดคือ พื้นฐาน การเขียน Objective-C นะครับ เพราะมันจะทำให้เราดัดแปลงอะไรได้เยอะเลยเกี่ยวกับงานของเรา จะได้สบายตอนประยุกต์ใช้งานจริงนะ ส่วนโค้ดส่วนอื่นๆ เราไปหาดูโค้ด ก้อรู้เรื่องแล้วหละครับหากพื้นฐานเราได้
ใช่ครับ เป็นการแบบคัดตัวอักษรไทย อักษรอังกฤษ ที่เด็กๆ อนุบาลฝึกคัดกันครับ
งานของผมเป็นงานเกี่ยวกับกราฟฟิคบน iOS ใช่ไหมครับ
ผมจะลองศึกษาดูก่อนนะครับ ยังไงก็ขอบคุณ คุณ adaydesign มากครับ
พอดีผมจะต้องทำ Senior Project จบของมหาวิทยาลัย ก็เลยไม่มีที่ปรึกษา
ถ้ามีอะไรปรึกษาจะขอปรึกษาเพิ่มเติมอีกนะครับ ขอบคุณล่วงหน้านะครับ
ยินดีให้คำปรึกษาครับ :)
พี่น้องมีคำถามมาถามดังนี้ค่ะ
1.ตัว view controller ที่อยู่ในหน้า story board อ่ะมันสามารถย่อขยายได้เหมือนรูปป่ะ หรือว่าต้องขนาดตามที่เค้าให้มาแค่นั้น
2.พี่น้องมีปัญหาตรงที่ได้สร้าง Table View Controller แล้วก็ปรับตารางเป็นแบบ Group แล้วก็ทำการลากพวก label textfield button อื่นๆ มาวางบนแถวของตาราง อันนี้เป็น view ที่ถูกเลือกมาจากแถวของตารางก่อนหน้านี้อีกที แต่พอรัน แล้วมันไม่ขึ้นอ่ะ ตารางไม่ขึ้น ปุ่มไรต่างๆที่ลากมาวางไม่ขึ้น คือน้องอยากทราบว่ามันต้องเซตไรเพิ่มเติม ที่ต่างจากตารางธรรมดาไม่ใช่แบบ group หรือเปล่า
สวัสดีครับ ขอตอบทีละข้อเลยเนอะ
ข้อ 1 view controller ใน storyboard เปลี่ยนขนาดไม่ได้ครับ ต้องตามขนาดหน้าจอ iPhone iPad เท่านั้น
ข้อ 2 การเรียกใช้ TableView นอกจากเราจำลอง prototype จาก storyboard แล้ว เราต้องเชื่อม datasource จาก tableview ไปยังไฟล์ viewcontroller ด้วย จากนั้นเราก็เขียนฟังก์ชั่น datasource เพิ่มได้แก่
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section เพื่อบอกจำนวนแถวในแต่ละ section ถ้าเราทำเป็น group ก้อต้องระบุจำนวนสมาชิกในแต่ละ group
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
เพื่อระบุว่าแต่ละแถวจะให้แสดง cell ในลักษณะไหนบ้าง
อันนี้เราต้องไปตั้งชื่อให้กับ tableviewcell ของเราด้วยนะ แล้วก้อเรียกใช้ในคำสั่ง
[self.aTable dequeueReusableCellWithIdentifier:@”a1″];
เท่านี้ cell ที่เราจำลองใน storyboard มันก้อจะขึ้นมาให้เห็นแล้วนะครับ
ถามเพิ่มอีกนิดค่ะ
Search Bar กับ Search Bar and Search Display ต่างกันอย่างไร แล้วจะใช้ตัวไหน ถ้าเราจะทำ search จาก table view controller อ่ะค่ะ
คำถามต่อมาค่ะ แล้วถ้าเราจะวาง Bar Button Item บน toolbar ด้านบนซึ่งมันจะสองฝั่งคนละด้านของ Tiltlte คือซ้ายกับขวา ถ้าวางด้านละปุ่มน้องว่างได้ค่ะ ที่นี้ถ้าอยากวางด้านละมากกว่าปุ่มเดียวทำไงอ่ะค่ะ ลากตัว Fixed มาแล้วก็ไม่เห็นวางได้ พอวางไปมันก็ไม่ปรากฏบนแถบบาร์นั้น แล้วพอเอา Bar button มาอวางอีก มันก็ไปซ้อนอันเดิม อ่ะค่ะ
สวัสดีครับ ตามมาตอบเพิ่มอีก
ข้อ 1 Search Bar กับ Search Bar & Search Display ต่างกันที่การตั้งค่าการเชื่อม ตัวแปรและ delegate ครับ เพราะตัว Search Bar & Search Display จะทำการตั้งชื่อตัวแปรและเชื่อม delegate กับ viewcontroller ให้อัตโนมัติ
หากเรารู้จักขั้นตอนการทำงานของมัน จะเลือกใช้อันไหนก็ได้ทั้งนั้นครับ ถ้าเราเลือก Search Bar ธรรมดา เราแค่มาตั้งชื่อตัวแปร แล้วก้อเชื่อม delegate เองเท่านั้นเอง
ข้อ 2 ดูจากคำถามแล้วน่าจะใช้เป็น Navigation Controller ใช่มั้ยครับ เพราะมันสามารถใส่ item ได้แค่ 2 อันคือ ซ้าย กับ ขวา เท่านั้น หากอยากวางได้หลายๆ ปุ่ม เราต้องใช้วิธี
– ซ้อน Top bar ของ Navigation Controller เอาไว้ แล้วทำ ToolBar เอง
– ใน ToolBar ของเราจะตกแต่งอย่างไร ก้อได้ ตามใจเลยครับ
ขอบคุณสำหรับทุกคำถามเลยนะครับ หากไม่เข้าก็ถามมาอีกได้นะ ;)
ขอบคุณสำหรับคำตอบทุกข้อนะค่ะพี่ มีถามต่ออีก
คือ ที่น้องถามว่า ย่อตัว storyboard หมายถึงเวลาน้องเลือก ipad พอคลิกเพื่อจะวาง ปุ่มอะไรต่างๆลงใน view controller ตัวหนึ่ง หน้าจอเสมือน ipad ตัวนี้ใหม่ใหญ่เต็มเลยอ่ะ แล้วถ้าทำ storyboad ของ ipad หลาย view นี้มันก็ทำให้มันเลื่อนยากๆ เลยอยากรู้ว่ามันย่อได้ไหมนะค่ะ ความหมายมันอันเดียวกับพี่เข้าใจไหมอ่ะ เห็นมีแต่ตัวซูมเข้าออก แต่อันนั้นมันซูมทั้งหมดของทุกตัว view controller ไม่ใช่อันเดียว
ส่วนอีกคำถาม ถ้าเราเอาปุ่มมาวางบน หน้า interface สักตัว หรือจะเป็น bar button สักตัว แล้วพอคลิกให้ มันมีเด้งอีกหน้าจอคล้ายป็อบอัพ คือคล้ายกรณี split view ของ ipad เวลาที่เราทำเป็นแนวตั้ง เมนูที่อยู่ด้านซ้ายมันจะซ่อน แล้วให้เราไปคลิกที่ปุ่มบาร์บัตตอนอีกที น้องเลยอยากถามว่าถ้าจะทำแบบคลิกปุ่มสักปุ่มแล้วให้มันเด้งมาให้เลือกเหมือน split view งั้นทำไงอ่ะค่ะ
มาอธิบายเพิ่มกลัวพี่งง ที่บอกว่าเหมือน split view ก็คล้ายที่มีหน้าต่าง window ใหม่อันเล็กๆขึ้นมา พอกดที่เดิมก็หาไป หรือว่าเลือกแล้วก็หายไปนะค่ะ เพราะน้องจะสร้างปุ่มนี้ไว้บน top bar แล้วพอคลิกจะให้ ก็จะมีหน้าจอเล็กๆให้เลือกว่าจะเรียงข้อมูลจากมากหรือน้อย บน table view นะค่ะ
แสดงว่าผมตอบไม่ตรงคำถามแฮะ ตรงซูมของ storyboard ปกติผมก็กด +/- ย่อขยายเอานั้นแหละ ถ้ามีหลายๆ หน้าจอมันก้อจะเลื่อนยากหน่อย T-T ไม่รู้จะตอบยังไงเหมือนกัน เอาเป็นว่าผมก็ใช้แค่ปุ่ม +/- ครับ ถ้าจะดูภาพรวมกับดูเฉพาะ viewcontroller
ส่วนจะให้มี window ใหม่อันเล็กเข้ามาใช้ UIPopoverController ครับ
ดูตัวอย่าง http://www.raywenderlich.com/1056/ipad-for-iphone-developers-101-uipopovercontroller-tutorial :)
น้องไปดูใหม่อีกรอบพี่ ถ้าเลือก แบบสร้าง storyboard มันย่อไม่ได้ แต่ถ้าเป็น .nib นี้ย่อได้ โดยไปคลิกที่เครื่องมือ show the attribute inspector แล้วเลือกเป็น freedom จะทำให้มันย่อตัว .nib ได้ เหมือเอาไว้ใช้ทำ UIPopoverController
พี่ค่ะ UIPopoverController มันใช้กับ iphone ได้ใช่ไหมอ่ะ หรือว่าได้แค่ ipad น้องทำตามจากคลิปนี้ http://www.youtube.com/watch?v=gaaLMKuPwfU ประยุกต์ใช้แบบที่ใช้ storyboard แต่ยังไม่ได้ แล้วจากคลิปนี้ใช้สำหรับกรณีที่สร้าง xib น้องอยากถามว่ามีกรณีที่ใช้ กับ storyboard หรือเปล่าค่ะ
มาช่วยตอบเรื่อง UIPopoverController ว่าใช้กับ iPhone ไม่ได้ครับ
แต่มีคนเขียน class คล้ายๆ กันมาให้ใช้
ส่วนเรื่อง storyboard อันนี้กำลังศึกษาอยู่เหมือนกัน รอเจ้าของ blog มาตอบนะครับ
พี่น้องทำ UIPopoverController ใน iphoe ประยุกต์ใช้กับ storyboard แบบ Storyboard Instantiate ViewController
ตัวอย่างโค้ด
-(IBAciton)btSort:(id)sender{
SortSystem *sView=(SortSystem*)[self.storyboard instantiateViewControllerWithIdentifier:@”valueSort”];
UIPopoverController *pop=[[UIPopoverController alloc]initWithContentViewController:sView];
pop.delegate=self;
CGRect sizeSort=CGRectMake(0, 0, 200, 220);
[pop setPopoverContentSize:sizeSort.size
animated:NO];
[pop presentPopoverFromRect:sizeSort inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
มันไม่ได้อ่ะค่ะ มันติด SICABRT
พี่ค่ะ พอดีหนูทำโปรเจค ฐานข้อมูลเกี่ยวกับรายชื่อวิชา ตอนนี้หนูดึงข้อมูลรายชื่อวิชา จากsqlite มาแสดงบน tableviewได้แล้ว แต่มันติดตรงที่ไม่รู้จะกำหนด tableview ยังไงให้แบ่ง section ตามหมวดวิชาอะ ตาราง subeject ใน sqlite ที่หนูสร้างไว้มี 3คอลัม คือ 1.รหัสวิชา 2.ชื่อวิชา 3.หมวดวิชา คือหนูต้องการให้มันแบ่ง section ตามหมวดวิชาในฐานข้อมูลอะ ประมานว่า section แรกเปนชื่อหมวดวิชาภาษาอังกฤษ แล้วในsection นี้ ก็จะแสดงชื่อวิชา เช่น ภาษาอังกฤษ1,2,3,4 ไปจนหมด แล้วก็ขึ้น section ใหม่เปนหมวดวิชาอื่น ไม่ทราบว่าควรจะเริ่มไงดีค่ะ ในส่วน numberOfSectionTableView กับ numberOfRowInSection ควรจะกำหนดยังไงดีค่ะ
เริ่มแรก ในส่วนของการจัดเก็บข้อมูล เก็บด้วย Dictionary ก็ได้นะครับ
key เป็นชื่อ หมวด
object เป็น Array ของชื่อวิชาต่างๆ
ตัวอย่าง
key object
eng array(eng1,eng2,eng3)
math array(math1,math2,math3,math4)
chem array(chem1,chem2,chem3)
2. ใส่ค่าในฟังก์ datasource ของ table
numberOfsection ก็ใส่ = จำนวน key (หมวดทั้งหมด)
ืnumberOfRowInSection ก็ใส่ สมาชิกของอาเรย์ของแต่ละหมวด โดยที่ต้อง if-else ด้วย
ตัวอย่าง ดูคร่าวๆ แล้วกัน
if(key==”eng”) return 3; // array.count
else if(key==”math”) return 4;
else if(key==”chem”) return 3;
3. ใส่การแสดงค่าใน cellForRowAtIndexPath
ตรงนี้เราก็ต้องเช็คก่อนว่าเป็น indexPath.section ไหน และ indexPath.row เท่าไร
เช่น
section = 1
row = 2
เราจะได้คำว่า math3
4. ตั้งค่าชื่อ section
ชื่อเมธรอด TitleSection อะไรสักอย่าง ตรงนี้ก็เช็ค section เหมือนกัน แล้ว return ค่า key ออกไป
ขั้นตอนทั้งหมดเป็นแบบคร่าวๆ ครับอาจจะไม่ค่อยรู้เรื่อง แต่ส่วนที่ควบคุมการแสดงของ tableview อยู่ที่ data (ต้องเก็บให้เรียกใช้งานได้ง่าย ไม่ใช้ Array ก็ Dictionary) และการกำหนดการแสดงผลใน indexPath.section และ indexPath.row ต้องใช้ if-else ตรวจสอบเสมือน
อยากได้ตัวอย่างการแสดง MapKit ใน Tab Bar หรือ step ในการทำน่ะค่ะ พอดีว่าลองทำแล้วพอเลือกที่ tab bar ที่เรียกใช้ mapkit app ก็ปิดไปทุกครั้งเลยค่ะ
ปล.ยังงงงวยกับ concept delegate อยู่น่ะค่ะ ขอบคุณล่วงหน้านะคะ
ใช้ xcode เวอร์ชั่นไหนครับ แล้วใช้ storyboard ด้วยหรือป่าว
xcode 4 + storyboard
http://codingandcoffee.wordpress.com/2011/10/12/iphone-tutorial-two-combining-uitabbarcontrollers-uitableviews-and-uinavigationcontrollers/
หากใช้เวอร์ชั่นอื่นๆ หรืออ่านแล้วงงส่วนไหน บอกได้นะ
ช่วงนี้ผมไม่ค่อยได้อัพเดทบทความเท่าไรนะครับ บางครั้งหากคำถามที่ ต้องตอบด้วยการอธิบายยาวๆ แล้วมีรูปประกอบด้วยนิ ผมอาจจะไม่ได้อธิบายชัดเจนนัก ถ้าให้ตอบในกระทู้ ดังนั้นผมจะหาลิ้งที่เป็นตัวอย่างมาให้ก่อนแล้ว เนอะ ขอบคุณทุกคำถามนะครับ ^^
ขอบคุณนะคะสำหรับตัวอย่าง แต่ว่าตอนนี้ใช้ xcode4.1 iOS4.3 Library อยู่น่ะคะ ไม่ได้ใช้ storyboard ค่ะ
ผมต้องขอโทษด้วยจริงๆ ผมให้ลิ้งตัวอย่างไปผิดอัน ถามเรื่อง Map ให้ตัวอย่าง Table View ซะนิ เหอะๆ
ผมว่าก่อนอื่นเราต้องเข้าใจเรื่อง Tabbar ก่อนนะครับ ว่ามันกดดูแต่ละ ViewController ยังไง
แล้วเลือก ViewController ที่ต้องการ แล้วค่อยใส่ Map เข้าไป พูดเหมือนง่ายแฮะสงสัยต้องมีตัวอย่างจริงๆ นะเนี่ย จะลองหามาให้นะครับ
ส่วนเรื่อง Mapkit ลิ้งที่ผมเก็บไว้ เขาสอนตั้งแต่เริ่มต้น จนถึงการเรียกจุดพิกัดที่เราอยู่ได้เลย
https://adayd3sign.wordpress.com/2011/04/14/link-iphone-mapkit-tutorial/
พี่ค่ะ จากตัวอย่างที่พี่ได้อธิบายในเรื่อง sort ข้อมูล น้องก็เลยมาลองทำ แต่อยากทราบว่า ่ตอนเรากด segment control ไปแล้วจะทำไงให้ table view มันเปลี่ยนตามอ่ะค่ะ คืออย่างที่น้องทำพอกด segment เราจะเช็คอว่า index ไหน พอ รู้ก็จะให้มันเรียงอาเรย์ แต่ปัญหาคือจะทำให้ table view เปลี่ยนตาม แต่ละปุ่ม ของ segment อ่ะค่ะ
หากใช้ เมธรอด sortedArrayUsingDescriptors แล้วมันจะได้ Array ออกมา 1 ตัว
ก็แทนค่า อาร์เรย์ที่ใช้เป็นข้อมูลของ tableView ไปเลย (เวลาจะแสดงผลใน tableview มักจะใช้ array เป็นตัวเก็บสมาชิก ก็เอาค่าจากการซอสใส่อาเรย์ตัวนั้นแหละ แล้วโหลดดาต้าอีกครั้ง)
แล้วเรียก [tableView reloadData]
พี่ครับ ทำไงให้ เวลาที่ เรากด เลือกข้อมูลใน Table View แล้วมันเรียก View อีก View ขึ้นมา และทำการส่งค่าไปเกบยัง NSString ของ อีก View คือผมเขียนโค้ดแบบนี้ มันเรียกอีก View ขึ้นมาแสดง ได้ แล้วก็เซตค่าพวก Label ของอีกวิวได้ แต่ไม่สามารถเอาค่าไปเกบยังNSString ของ อีก view ได้
-(void) table view:(UITableView *) table View didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
storyBoardName bundle:[NSBundle mainBundle]];
ViewDetail *viewdetail = [storyboard instantiateViewControllerWithIdentifier:@”PageDetail”];
[self persentModalViewController:viewdetail animated:YES];
viewdetail.lblName.text = subname; /// << อันนี้สามารถเซตได้
viewdetail.itemName = subname; /// << แต่ถ้าเอาค่าไปเกบไว้ใน NSString ตัวนี้ไม่ได้
}
itemName ประกาศเป็น property ยังไงบ้างครับ
@property (strong,nonatomic) NSString *itemName;
อะป่าว
ผมทำได้แล้วครับ เปลี่ยนมาใช้ segue แทน ขอบคุณครับ
พี่ครับ คือ อยากทราบวิธี ทำให้ TableView แสดงแผนเล็กๆที่ใน Table Cell แบบในรูปนี้อะครับ
http://upic.me/show/32169953
พี่พอจะมีวิธีเขียนโค้ดหรืออธิบายหลักการทำงานของมันได้ไหมครับ
บทความให้ความรู้มากค่ะ…ขอบคุณมาก
และมีคำถามว่า เราจะสามารถเว็คการเชื่อมต่ออินเตอรืเน็ตได้อย่างไรค่ะ และควรเขียนไว้ที่ไฟล์ไหน
และเราสามารถเช็คการ login ของสมาชิกได้อย่างไร เช่นกันค่ะ
ขอบคุณค่ะ
เช็คการเชื่อมต่ออินเตอร์เน็ตนี้ใช้ไฟล์ Reachability.h กับ .m
โหลดตัวอย่างโปรเจคที่
http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
แต่เราใช้จริงๆ แค่ 2 ไฟล์นะครับ อย่าลืมดูว่ามัน import framework อะไรเข้ามาบ้างด้วยนะ
พี่ค่ะ เวลาเข้าหน้าบล็อกพี่ ถ้าเปิดบน ipad มันก็จะแสดงในรูปแบบของipad หรือถ้าไม่อยากให้แสดงในรูปแบบ ipad ก็เห็นมีให้คลิกแสดงเหมือนหน้าเว็บทั่วไป ไม่ทราบว่ามันทำได้อย่างไรค่ะ
plugin ของ wordpress.com เขาทำให้อัตโนมัติครับ
พี่แล้วถ้าอยากให้แสดงแบบนี้ต้องทำไงอ่ะ ต้องเขียนขึ้นเองหมดเลยไหม ต้องมี html 5 เกี่ยวข้องด้วยเปล่าอ่ะค่ะ
ผมไม่ทราบครับ แต่มันมีวิธีเขียนเว็บให้รองรับทั้งบน desktop laptop tablet phone อยู่นะ แต่ผมจำชื่อไม่ได้ ตอนนี้เขากำลังฮิตกันอยู่เลย
พี่ค่ะ ถ้าทำ search bar โค้ดมันจะเขียนประมาณไหนอ่ะค่ะ ตอนนี้ก็ลากตัว search bar มาวางในวิว แล้ว ไปหาข้อมูลจากเว็บอื่นมันก็ยังงงๆน่ะค่ะ ยังไงพี่ช่วยแนะแนวทางหน่อยนะค่ะ
อีกเรื่องคือ แล้วทำ tob bar ให้มีปุ่ม edit พอกด จะมีเครื่องหมายลบขี้นมาในเซลล์ตารางน่ะค่ะ ให้เรากดลบข้อมูลใน table view ได้น่ะค่ะ ไม่ทราบว่ามันทำอย่างไรอ่ะคะ
ปุ่มใน top bar นี้ต้องสร้างขึ้นเองครับ จะแปะเอา หรือ เขียนโค้ดก็ได้ ส่วนการ delete cell ตามตัวอย่างเลย http://gazapps.com/wp/2011/07/11/add-and-delete-customized-uitableviewcell/
ใช้ delegate method
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
เราต้องลบข้อมูลใน อาเรย์ ที่จะแสดงในเทเบิลด้วย ก่อนจะ reload data
คือผมรบกวนถามอะไรหน่อยนะครับ คือผมอยากทำ App ipad ขึ้นมาแอปหนึ่งเกี่ยวกับการโชวร์ข้อมูล หรือข้อความขึ้นมามีรูปขึ้น และมี TableView อยู่ในหน้านั้นเมื่อกดข้อมูลใน Table ข้อมูลก็จะโชว์ ข้างๆ Table ซึ่งอยู่ในหน้าเดียวกันหน่ะครับ เราควร เลือก Create App แบบไหนดีครับ และใช้ฐานข้อมูลยังไงดีในการเก็บข้อมูลที่จะโชว์อะครับรบกวนตอบผมด้วยนะครับ ขอบคุณครับ
สร้างเลือก template แบบ Master Template , Split Template, หรือแบบ Single View (ViewController) ธรรมดาแล้วเขียนเอาเองทั้งหมดก็ได้
ส่วนหากข้อมูลไม่เยอะ เก็บใส่โค้ดโดยใช้ array หรือ dictionary ได้
ข้อมูลเยอะขึ้นมาหน่อย ใช้ .plist file
ข้อมูลจำเป็นต้องมีเป็น table เลือกใช้ core data ไม่ก้อ ไฟล์ฐานข้อมูลภายนอกใช้ sqlite
พี่ค่ะ ถามเรื่อง table view หน่อย ถ้าตอนเราเอาข้อมูลใส่แล้วมันยาวเลย cell ตาราง แนวขว้าง จะทำยังไงไม่ให้มันตัดบรรทัดลงมาอ่ะค่ะ
พี่พิมพ์ผิด จะบอกว่าจะทำยังไงให้มันตัดบรรทัดลงมาค่ะ
อยากรู้เกี่ยวกับการทำApplication E-book แล้วช่วยแนะนำ Framework ที่เกี่ยวกับการเอาPDFมาใช้ที่ครับ ถ้าเป็นแบบฟรจะดีากเลยครับ
เชียนเชื่่อมต่อฐานข้อมูลภายนอกต้องทำอย่างไหรครับ อย่างมี sqlserver ต้องทำยังไรต้องเขียนแบบไหนครับ
ผมจะทำนิตยสาร ประมาณ Mars , Zoo ครับ ไม่ทราบว่ามีวิธีให้เวลาโหลดแล้วมันไปอยู่ใน newsstand อย่างไรครับ
ทำนิตยสารเนี่ย ทีมผมเองยังไม่เคยและไม่มีประสบการทำเลยครับ คงให้คำตอบไม่ได้ครับ
น่าจะมีบทความเกี่ยวกับการทดสอบรันแอพบน iphone เลยนะ การตั้งค่าต่างๆ บน xcode
ขอบคุณครับที่แนะนำ
อยากทราบวิธี เปลี่ยนหน้าจากไฟล์ .xib ไป storyboard ครับ ผมลองใช้วิธีนี้
-(IBAction)btnHome:(id)sender
{
FirstViewController*viewType = [[FirstViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:viewType animated:NO completion:NULL];
}
พอกดเปลี่ยนมาหน้า storyboard จอจะดำ
แต่ใช้วิธีเดียวกัน จาก storyboard ไป .xib ได้ปกติครับ
อยากทราบว่า ถ้าเราพัฒนาด้วย Xcode4 แต่เราอยากใช้ Keyboard iOS7 สามารถทำได้ไหมค่ะ
ใน Xcode4 ไม่มีตัว simulator ของ iphone ipad ที่ใช้ iOS7 และไม่รองรับ iOS7 SDK ด้วยนะครับ
ส่วนเราจะเอาแค่ keyboard iOS7 มาใช้ใน simulator ของ xcode4 ก็ไม่ได้เช่นกันครับ
อาจจะเปลี่ยนไปใช้ xcode5 น่าจะดีกว่าครับ เพราะมันรองรับ iOS7 SDK อยู่แล้ว
Pingback: iOS Dev : การติดตั้งและเริ่มใช้งาน Xcode - APPCODEV