Question

How do you create multiple grouped UITableView sections in rubymotion?

Incomplete code below. I need help establishing how different UITavleViewDataSource Methods work with each other.

class TableController < UIViewController

    def viewDidLoad
        super
        self.title = "TableView"
        @table = UITableView.alloc.initWithFrame(self.view.bounds,
            style: UITableViewStyleGrouped)
        view.addSubview(@table)

        @table.dataSource = self
        @table.delegate = self

        @data = ['First Name','Last Name','Birthdate', '']
        @datatwo = ['Locations','Allergens']

    end

    def tableView(tableView, numberOfSectionsInTableView: tableView)
        2
    end

    def tableView(tableView, numberOfRowsInSection: section)
        # ***I'm not sure if I should list both my arrays above***
    end

    def tableView(tableView, cellForRowAtIndexPath: indexPath)
        @reuseIdentifier ||= "CELL_IDENTIFIER"

        cell = tableView.dequeueReusableCellWithIdentifier(@reuseIdentifier)
        cell = UITableViewCell.alloc.initWithStyle(
                UITableViewCellStyleDefault,
                reuseIdentifier: @reuseIdentifier)

        @text = UITextField.alloc.initWithFrame([[140, 12], [160, 50]])

        if (indexPath.section) == 0

            if (indexPath.row) == 0
                @first = @text
                @first.placeholder = "First Name" 
                @first.textAlignment = UITextAlignmentRight
                cell.addSubview(@first)
            elsif (indexPath.row) == 1
                @last = @text
                @last.placeholder = "Last Name"
                @last.textAlignment = UITextAlignmentRight
                cell.addSubview(@last)

            end
        end

        if (indexPath.section) == 1
                        if (indexPath.row) == 0
                @location = @text
                @location.placeholder = "Location" 
                @location.textAlignment = UITextAlignmentRight
                cell.addSubview(@location)
            elsif (indexPath.row) == 1
                @kidallergens = @text
                @kidallergens.placeholder = ""
                @kidallergens.textAlignment = UITextAlignmentRight
                cell.addSubview(@kidallergens)
            end
        end


        cell.textLabel.text = @data[indexPath.row]
        cell
    end

    def tableView(tableView, didSelectRowAtIndexPath: indexPath)
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
    end
end
Was it helpful?

Solution

Use the section argument to determine which number to return.

def tableView(tableView, numberOfRowsInSection: section)
  if section == 0
    @data.length
  elsif section == 1
    @datatwo.length
  else
    0
  end
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top