2017-12-26 8 views
-1

나는 개발자가 아니다. 저는 디자이너이고 작동하는 프로토 타입을 작성하려고합니다. 내가 묻는 무엇이 막연한 것처럼 보이면 미안하지만 YouTube 자습서와 답변을 여기에서 샅샅이 뒤졌지만 여전히 어려움을 겪고 있습니다.스위프트 4 - 테이블 뷰를 채우고 배열/사전 데이터를 디테일 뷰 컨트롤러로 전달

내부에 테이블 뷰가있는보기 컨트롤러가 있습니다. 테이블 배열에 정보를 채우려고합니다. 이것은 내가 붙어있는 첫 번째 영역입니다. 셀에 단일 데이터 요소를 채우는 방법을 알고 있지만 여러 데이터는 셀에 채우지 않습니다. 셀에는 첨부 된 이미지 파일에 표시된대로 맥주의 이름, 가격 및 간단한 설명이 표시되어야합니다. 현재 BeverageViewController에있는 코드는 다음과 같습니다. 또한 "ipsum lorem"텍스트는 표시하지 않으려는 추가 설명 텍스트이지만 가능한 경우 표시되도록 BeverageDetailsViewController에 전달하고 싶습니다. prepareForSegue 또는 performSegue를 설정하여 선택한 행을 참조하는 방법을 모르겠습니다.

class BeveragesViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet weak var BeveragesTableView: UITableView! 

// Data 
let beverages = [ 
    ("Coke", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Sprite", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Powerade", "2.00", "20 fl oz", "ipsum lorem"), 
    ("Blue Moon", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Budweiser", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Bud Light", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Corona", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Dos Equis", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Fat Tire", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Heineken", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Red Stripe", "2.00", "12 fl oz", "ipsum lorem"), 
    ("Stella Artois", "2.00", "12 fl oz", "Stella Artois Premium Lager"), 
    ("Yuengling", "2.00", "12 fl oz", "ipsum lorem")] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    BeveragesTableView.delegate = self 
    BeveragesTableView.dataSource = self 
} 


//Populate Table 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return beverages.count 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = BeveragesTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell 

    let beverage = beverages[indexPath.row] 



    return cell! 

} 

UITableView

답변

1

정보에 관한 데이터를 보유하고 모델 클래스 만들기 - :

import UIKit 


class Videos:NSObject{ 

    var title:String? 
    var thumbNailImageView : String? 
    var channel : String? 
    var numberOfView : Int? 
    var duration : Int? 

    init(title:String,thumbNailImageView:String,numberOfView:Int,duration:Int,channel:String) { 
     self.channel = channel 
     self.title = title 
     self.thumbNailImageView = thumbNailImageView 
     self.duration = duration 
     self.numberOfView = numberOfView 

    } 
} 

컨트롤러 클래스 - : 여기

우리는 유형의 배열을 ->모델 클래스을 입력 한 다음 objectarray에 추가 한 후 fetchdataserver에서 가져오고 loop을 실행하여 objects 정보를 여러 개 입력하십시오.

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var tableView: UITableView! 
    var model = [Videos]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     // Add object to array 
     let object = Videos(title: "abc", thumbNailImageView: "adf", numberOfView: 1, duration: 2, channel: "cde"); 
     model.append(object); 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

extension ViewController:UITableViewDelegate,UITableViewDataSource{ 
    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return model.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath); 
     cell.textLabel?.text = model[indexPath.row].title 
     return cell; 
    } 
} 

방금 ​​해결 방법에 대한 예제를 제공했습니다. 사용자 지정 셀 클래스를 만들고 필요한 모든 코드를 outlets에 배치하고 코드에 표시된대로 data을 제공 할 수 있습니다.

은 필요가 이미 storyboard에서 연결 한 경우 viewdidLoaddataSource & Delegate을 설정하지 않으며, viewDidLoad에서 registercell에 둘 필요 storyboards를 사용하는 경우.

+0

고맙다. 나는 그 예에서 벗어나서 일을 시작할 수 있었다. 마지막으로, 객체에 여러 항목을 넣을 수 있습니까? 현재 내가 가지고 "//하자 배열에 객체를 추가 객체 = 음료 (BeverageName :"코로나 ", BeveragePrice :"$ 2.00 ", BeverageSize을 :"12 온즈 ", BeverageDesc"로렘 입숨을 "); " –

+0

@ JasonTremain은 서버에서 오는 모든 세부 정보입니까? –

+0

아니요, 프로토 타입을 보여주기위한 목적으로 '더미 앱'이기 때문에 코딩을 어렵게합니다. 나는 여러 객체 (object1 - object12)를 만들고 추가 할 수 있다는 것을 알아 냈습니다. 그냥 간단한 방법이 있다면 그냥 모르겠어요 –