เพื่อแสดงแผนภูมิหลายรายการ เช่น แผนภูมิแท่ง แผนภูมิวงกลม แผนภูมิเส้นในมุมมองคอลเลกชันเดียวในตัวควบคุมมุมมอง

ข้อกำหนดของแอปของฉันคือฉันต้องแสดงแผนภูมิที่แตกต่างกัน เช่น แผนภูมิวงกลม แผนภูมิเส้น แผนภูมิแท่ง ฯลฯ ในมุมมองคอลเลกชันในตัวควบคุมมุมมอง ฉันกำลังวางแผนที่จะใช้ไลบรารีที่ใช้มากที่สุดเพื่อสร้างแผนภูมิ https://github.com/danielgindi/Charts .หากต้องการใช้งานแผนภูมิแต่ละประเภทแยกกันบนเพจ เราต้องสร้าง UIView ของคลาสของแผนภูมิ ตัวอย่างเช่น หากต้องการใช้แผนภูมิวงกลม เราต้องสร้างมุมมองของคลาส PieChartView คำถามของฉันคือ หากเราต้องการแผนภูมิที่แตกต่างกันในมุมมองคอลเลกชันเดียว เราจะนำไปใช้ได้อย่างไร เนื่องจากฉันยังใหม่กับตัวอย่างโค้ดการพัฒนาที่รวดเร็วจึงช่วยได้จริงๆ

ขอบคุณล่วงหน้า.


person Community    schedule 22.11.2017    source แหล่งที่มา


คำตอบ (1)


สมมติว่าตัวควบคุมมุมมองที่แสดงมุมมองคอลเลกชันนั้นเรียกว่า StatsVC จากนั้นคุณจะต้องเพิ่มมุมมองคอลเลกชันในตัวสร้างอินเทอร์เฟซ คลิกที่ collectionViewCell และกำหนดตัวระบุการใช้ซ้ำ (เช่น ChartCell) จากนั้นในโค้ด: class StatcVC:UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { //create your charts here and put them in an array to be easier later on func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int -> Int { return numberOfCellsYouNeed } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath) -> UICollectionVIewCell{ if let cell = collectionView.dequeueReusableCell(withIdentifier:"chartCell", for: indexPath) { cell.addSubView(chartViews[indexPath.row]) return cell }else{ return UICollectionViewCell() }}

นี่เป็นวิธีพื้นฐานในการทำ แต่อาจดูไม่สวยงามนัก ขั้นตอนต่อไปคือการสร้างคลาส collectionViewCell แบบกำหนดเอง และใน InterfaceBuilder คุณสามารถออกแบบได้ จากนั้นในการเชื่อมต่อช่องทางในคลาสแบบกำหนดเอง ChartCell ของคุณ (UICollectionVIewCell) และใช้แบบกำหนดเองนี้ เซลล์ใน StatsVC ข้อดีของเซลล์แบบกำหนดเองคือคุณสามารถมีป้ายกำกับที่ด้านบน/ล่างซึ่งอธิบายแผนภูมิหรือองค์ประกอบ UI อื่น ๆ ที่คุณต้องการ หากคุณเก็บมุมมองแผนภูมิทั้งหมดไว้ในอาร์เรย์ คุณสามารถเพิ่มลงใน collectionView ได้อย่างง่ายดายด้วยวิธีข้างต้น

อัปเดต หากต้องการสร้างมุมมองโดยทางโปรแกรม คุณสามารถทำได้ดังนี้:

let barChartView1 = BarChartView() let barChartView2 = BarChartView() barChartView1.data = ...// you do what you need to do here, I'm not familiar with your data/code... var chartViews = [barChartView1, barChartView2] สุดท้ายนี้ อย่างที่คุณเห็นด้านบน คุณสามารถใช้ indexPath.row เป็นดัชนีอาร์เรย์เพื่อดึง ChartView ถัดไปออกมาและใส่ไว้ใน collectionViewCell การทำงานกับมุมมองตารางคอลเลกชันไม่ใช่เรื่องเล็กน้อย ดังนั้นฉันขอแนะนำให้อ่านหนังสือดีๆ ที่ห้องสมุด Apple บทความ Tjios อธิบายโดยละเอียด https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CollectionViewBasics/CollectionViewBasics.html

person Andras M.    schedule 22.11.2017
comment
ขอบคุณสำหรับความช่วยเหลือ แต่ github.com/danielgindi/Charts อธิบายถึงการเพิ่มคลาสของมุมมองในตัวสร้างอินเทอร์เฟซเท่านั้น ฉันไม่รู้วิธีเพิ่มโดยทางโปรแกรมและเพิ่มลงในอาร์เรย์ คุณช่วยแบ่งปันตัวอย่างโค้ดให้ฉันได้ไหม ขอบคุณล่วงหน้า - person ; 22.11.2017
comment
@ user8986838 คุณได้รับวิธีแก้ปัญหาบ้างไหม? - person jayant rawat; 17.02.2020