2016-09-22 11 views
0

こんにちは、私はUITableviewを作るのに困っています。私はnibファイルとしてセルを作り、そのセルをUITableViewに表示したい。しかし、アプリを起動するとnibファイルはUItableviewに表示されません。私はこれを理解する方法を知らない。ソースは、コマンドdownloadedContents = getDownloadInformation()!を実行した後、あなたはあなたのtableviewためreloadDataが必要UITableviewは、素早くnibファイルとして作成したセルを表示しません。

import UIKit 

class DownLoadPlayViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { 

    @IBOutlet var tableview: UITableView! 
    @IBOutlet var totalNumSizeInfo:UILabel! 



    let cellID:String = "DownLoadPlayViewControllerCell" 
    var downloadedContents: [Dictionary<String,String>] = [] 
    var showContents: Dictionary<String,String> = [:] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableview.delegate = self 
     self.tableview.dataSource = self 
     self.tableview.registerClass(DownLoadPlayViewControllerCell.classForCoder(), forCellReuseIdentifier: "DownLoadPlayViewControllerCell") 
//  self.tableview.registerClass(DownLoadPlayViewControllerCell.self, forCellReuseIdentifier: "DownLoadPlayViewControllerCell") 

//  self.tableview.registerNib(UINib(nibName: "DownLoadPlayViewControllerCell", bundle: nil), forCellReuseIdentifier: "DownLoadPlayViewControllerCell") 



     downloadedContents = getDownloadInformation()!; 
     totalNumSizeInfo.text = "초기화 상태" 

//  let contentInfo : Dictionary<String,String> = self.downloadedContents[0] 
//  print(contentInfo["contentTitle"]) 
//  print(contentInfo["viewDate"]) 
    } 

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

    /*Podlist에 있는 다운로드 파일정보를 가져온다. */ 
    func getDownloadInformation() -> [Dictionary<String,String>]?{ 
     var returnValue : [Dictionary<String,String>]? = 
      NSUserDefaults.standardUserDefaults().objectForKey("downloadedContents") as? [Dictionary<String,String>] 
     if((returnValue?.isEmpty) == true){ 
      returnValue = nil 
     } 
     return returnValue 
    } 

// func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
//  return 1 
// } 
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return downloadedContents.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 
//  let cell = tableView.dequeueReusableCellWithIdentifier("DownLoadPlayViewControllerCell", forIndexPath: indexPath) as! DownLoadPlayViewControllerCell 
     let cell = tableView.dequeueReusableCellWithIdentifier("DownLoadPlayViewControllerCell") as! DownLoadPlayViewControllerCell 
     let contentInfo : Dictionary<String,String> = self.downloadedContents[indexPath.row] 
     cell.titleLabel?.text = contentInfo["contentTitle"] 
     cell.dateLabel?.text = contentInfo["viewDate"] 

     return cell; 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    { 
     let contentInfo : Dictionary<String,String> = self.downloadedContents[indexPath.row] 
     print(contentInfo["downLoadURL"]) 
    } 

//MARK: ButtonClickArea 

    @IBAction func closeButtonClick(sender: AnyObject) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
    } 


} 
+0

ようtablecellControllerを変更することで問題を解決customCellクラスのコードも共有してください。 –

+0

は、 'DownLoadPlayViewControllerCell'のコードを表示します – Santosh

答えて

0

を下回っています。ちょうどそのようなtableview.reloadData()実行します。ここでは

downloadedContents = getDownloadInformation()!; 
tableview.reloadData() //---------> add new like here 
totalNumSizeInfo.text = "초기화 상태" 
+0

全く動作しません。他のアイデア? –

+0

'registerNib'を試し、 'numberOfRowsInSection'にブレークポイントを置きます。ここで止まるの? – lee

+0

registerNibで試した後、DownLoadPlayViewControllerCellの{fatalError( "init(コーダー:)が実装されていません") }の必須のinitでエラーが発生しました。 numberOfRowsInSectionでは、それも停止します。 –

0

をカスタム作成したセルを使用する方法です。

注:私はStoryBoardを使用しておらず、ペン先でセルを作成しました。

CustoMCellクラスコード:

import UIKit 

class ActivityTableViewCell: UITableViewCell { 

// MARK: - Constants & variable 
// your outlets if any 

// MARK: - UITableViewCell methods 

override func awakeFromNib() { 
    super.awakeFromNib() 

    // Initialization code 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

// MARK: - helper methods 

class func cellForTableView(tableView: UITableView, atIndexPath indexPath: NSIndexPath) -> ActivityTableViewCell { 
    let kActivityTableViewCellIdentifier = "kActivityTableViewCellIdentifier" 
    tableView.registerNib(UINib(nibName: "ActivityTableViewCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: kActivityTableViewCellIdentifier) 

    let cell = tableView.dequeueReusableCellWithIdentifier(kActivityTableViewCellIdentifier, forIndexPath: indexPath) as! ActivityTableViewCell 

    return cell 
    } 
} 

そして、これは私が私のtableView

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = ActivityTableViewCell.cellForTableView(tableView, atIndexPath: indexPath) 

// access your cell properties here 
    return cell 
} 
0

でそれを使用する方法である私は、この

 required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
     self.alpha = 0 

     UIView.animateWithDuration(0.2, delay: 0, options: .CurveEaseIn, animations: { 
      self.alpha = 1 
      }, completion: { finished in 


     }) 
} 
関連する問題