2017-01-07 12 views
0
let custom = Bundle.main.loadNibNamed("PostView", owner: self, options: nil)?.first as! PostView 
custom.layer.cornerRadius = customCard.bounds.width/64 
custom.textLabel.text = "number \(index)" 
custom.numberOfComment.text = "4" 
custom.ratingLabel.text = "+ 39" 
custom.ratingLabel.textColor = UIColor(red:0.61, green:0.92, blue:0.53, alpha:1.0) 

      return custom 

私がしようとしているのは、セパールラベルのテキストを別個に設定することです。 xibファイルを作成し、以下のコードで配列を作成します。スウィフト - 配列からの読み込み

var posts:[Post] = [] 

func observeDatabase() { 

    let Ref = FIRDatabase.database().reference().child("posts") 
    Ref.observe(.childAdded, with: { snapshot in 

     let snapshotValue = snapshot.value as? NSDictionary 

     if let title = snapshotValue?["title"] as? String { 

      let postText = snapshotValue?["text"] as? String 
      let postName = snapshotValue?["name"] as? String 
      let postNumberOfComments = snapshotValue?["numberOfComments"] as? NSNumber 
      let postRating = snapshotValue?["rating"] as? NSNumber 
      let postID = snapshotValue?["postID"] as? String 

      self.posts.append(Post(name: postName as NSString?, image: UIImage(named: "none"), text: postText as NSString?, title: title as NSString?, comments: postNumberOfComments, rating: postRating, postID: postID)) 
     } 
    }) 
} 

そして、構造体

struct Post { 

      let Name: NSString 
      let Image: UIImage! // Should be optional in the future 
      let Title: NSString // Title 
      let Text: NSString // Text 
      let Comments: NSNumber? // Number of comments 
      let Rating: NSNumber // Number of up/down -votes 
      let PostID: String 

      var description: String { 
       return "Name: \(Name), \n Image: \(Image), Text: \(Text), Title: \(Title), Comments: \(Comments), Rating: \(Rating), PostID: \(PostID)" 
      } 

      init(name: NSString?, image: UIImage?, text:NSString?, title: NSString?, comments: NSNumber?, rating: NSNumber?, postID:String?) { 
       self.Name = name ?? "" 
       self.Image = image 
       self.Text = text ?? "" 
       self.Title = title ?? "" 
       self.Comments = comments ?? 0 
       self.Rating = rating ?? 0 
       self.PostID = postID ?? "" 
      } 
} 

との質問:どのように私は、配列を読み、そのindexpathに応じてラベルのテキストを設定するのですか? ありがとう!

答えて

2

が原因indexPathをご参照に、あなたの.xibファイル内のtableViewを持っていると仮定すると:

あなたが使用して、特定の行のためのポストを抽出することができます。

let post = posts[indexPath.row] 

という名前UILabelを持っていると仮定するとnameLabel

nameLabel.text = post.Name 
+0

ありがとうございました! – Victor

関連する問題