การสร้าง UICollectionView ซ้อนใน UICollectionView

UICollectionView คืออะไร? UICollectionView คือ คลาสคอมโพเนนท์ที่ทำหน้าที่จัดการลำดับการแสดงผลของกลุ่มของออบเจคในเลย์เอาท์ที่ปรับแต่งได้ สำหรับ CollectionView นั้นมีฟังก์ชันพื้นฐานทั่วไปทำงานเหมือนกันกับ TableView นอกจากว่า CollectionView นั้นสามารถที่จะจัดรูปแบบการแสดงผลได้มากกว่า 1 คอลัมน์ขึ้นไป หลายคนคงคุ้นเคยกับการใช้งานกับ UITableView กันอยู่แล้ว แต่ UITableView มีข้อจำกัดที่รูปแบบในการแสดงข้อมูลจะเป้นในลักษณะข้อมูลเรียงกันจากบนลงล่าง ซึ่งเหมาะกับสมัยก่อนที่หน้าจอของมือถือยังไม่ใหญ่มากพอจะแสดงข้อมูลหลายๆอย่างในแถวเดียวกันได้ แต่พอมือถือมีขนาดหน้าจอที่ใหญ่ขึ้นๆ ทำให้การแสดงข้อมูลเพียงอันเดียวต่อแถว ดูเป็นการใช้พื้นที่หน้าจอที่ไม่เหมาะสม UICollectionView เป็นเหมือน UITableView ที่ต่อยอดขึ้นมาเพื่อแสดงผลในรูปแบบที่หลากหลายได้มากขึ้น โดยสามารถแสดงเป็น grid หรือแสดงข้อมูลตามแนวนอนจากซ้ายไปขวาได้ ทำให้ยืดหยุ่นต่อการปรับใช้กับหน้าจอขนาดใหญ่   เรามีความสงสัยขึ้นมาว่า จะเป็นไปได้ไหมที่เราจะสร้าง UICollectionView ซ้อนใน UICollectionView แต่ยังคงสามารถจะเซต delegate และ datasource ให้กับ UICollectionView ได้เหมือนเดิมและยังสามารถทำงานได้ปกติตามหลักการใช้งานของ UICollectionView ? วันนี้เราจะมาหาคำตอบให้คลายกับความสงสัยนี้กัน  

iOS Tutorial – Begin with swift ( day 9 )

Initialization คือกระบวนการเตรียม instance ให้พร้อมใช้ของ class, structure หรือ enumeration กระบวนการนี้รวมไปถึง การกำหนดค่าเริ่มต้น properties ของ instance ไปถึงการเตรียมความพร้อมของค่าต่างๆ ที่จำเป็นก่อนที่ instance นี้จะพร้อมสำหรับใช้งาน Initializers คือ method ที่ถูกเรียกเพื่อจะสร้าง instance ใหม่ เราประกาศโดยใช้คีย์เวิรด์ init ตัวอย่างการใช้ struct TrackInfo{ var currentTime:Int init(){ currentTime = 0 } } จากตัวอย่าง structure มี properties อยู่ตัวเดียวคือ currentTime และมี initializer โดยไม่รับ parameter ใดๆ เข้ามาเลย โดยภายในจะทำหน้าที่เซตค่าตั้งต้นให้กับตัวแปร currentTime แต่เราสามารถจะเซตค่าตั้งต้นให้กับตัวแปร currentTime จากวิธีเบื้องต้น หรือเซตค่าตั้งต้นให้ตัวแปรนี้จากตอนประกาศตัวแปรเลยก็ได้ ดังนี้ Read more about iOS Tutorial – Begin with swift ( day 9 )[…]