class Formotion::RowCellBuilder
Public Class Methods
make_cell(row)
click to toggle source
PARAMS row.is_a? Formotion::Row
RETURNS [cell configured to that row, a UITextField
for that row if applicable or nil]
# File lib/formotion/row/row_cell_builder.rb, line 14 def self.make_cell(row) cell, text_field = nil cell = UITableViewCell.alloc.initWithStyle(row.object.cell_style, reuseIdentifier:row.reuse_identifier) cell.accessoryType = cell.editingAccessoryType = UITableViewCellAccessoryNone cell.textLabel.text = row.title observe(row, "title") do |old_value, new_value| cell.textLabel.text = new_value end if row.image Formotion::RowCellBuilder.set_image(cell, row) observe(row, "image") do |old_value, new_value| Formotion::RowCellBuilder.set_image(cell, row) end end cell.detailTextLabel.text = row.subtitle observe(row, "subtitle") do |old_value, new_value| cell.detailTextLabel.text = new_value end edit_field = row.object.build_cell(cell) if edit_field and edit_field.respond_to?("accessibilityLabel=") label = row.accessibility label = row.title unless label edit_field.accessibilityLabel = label if label end [cell, edit_field] end
set_image(cell, row)
click to toggle source
# File lib/formotion/row/row_cell_builder.rb, line 49 def self.set_image(cell, row) if row.image.is_a?(NSURL) || (row.image.is_a?(String) && row.image.include?("http")) # Use a remote image helper to set the image. image_url = row.image image_url = NSURL.URLWithString(image_url) unless image_url.is_a?(NSURL) placeholder = row.image_placeholder placeholder = UIImage.imageNamed(placeholder) if placeholder.is_a?(String) if cell.imageView.respond_to?("setImageWithURLRequest:placeholderImage:success:failure:") # Use AFNetworking request = NSURLRequest.requestWithURL(image_url) cell.imageView.setImageWithURLRequest(request, placeholderImage: placeholder, success: ->(request, response, image) { cell.imageView.image = image cell.setNeedsLayout }, failure: ->(request, response, error) { }) elsif cell.imageView.respond_to?("setImageWithURL:placeholderImage:completed:") cell.imageView.setImageWithURL(image_url, placeholderImage: placeholder, completed: ->(image, error, cacheType) { cell.imageView.image = image cell.setNeedsLayout }) elsif cell.imageView.respond_to?("setImageWithURL:placeholder:") # Use JMImageCache JMImageCache.sharedCache.imageForURL(image_url, completionBlock: ->(downloadedImage) { cell.imageView.image = downloadedImage cell.setNeedsLayout }) else raise "Please add the AFNetworking, SDWebImage, or JMImageCache pods to your project to use remote images in Formotion" end else # Just set the image like normal cell.imageView.image = (row.image.is_a? String) ? UIImage.imageNamed(row.image) : row.image end end