Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create sections in WKInterfaceTable

How can we create sections in table as there is no delegate for it. And is there any other way for creating sections or do we have to use two tables.

like image 352
Mohit Totlani Avatar asked Mar 02 '15 06:03

Mohit Totlani


2 Answers

WatchKit tables do not have sections or headers, or footers, or editing, or searching, or data sources, or delegates.

like image 132
sash Avatar answered Oct 23 '22 15:10

sash


WKInterfaceTable is not so flexible like UITableView, but you can create rows manually, using different row types. And fill content for each cell according to its type.

Take a look at the documentation:

Apple Watch Programming Guide: Tables

WatchKit Framework Reference: WKInterfaceTable

For example, let's create a table having two row types:

  • headerRowType
  • detailRowType

    #define type1 @"HeaderRowType"
    #define type2 @"DetailRowType"
    
    // You also must create two classes: HeaderRowType and DetailRowType - controllers for these two types
    
    // preparing datasource: fill rowTypes and tableObjects
    NSArray* rowTypes = @[type1, type2, type2, type2, type1, type2, type2]; // types for table with 1 header cell and 3 detail cells in first "section", 1 header and 2 detail cells in second "section"
    
    // set types! self.someTable - WKInterfaceTable, associated with table in UI
    [self.someTable setRowTypes:rowTypes];
    
    for (NSInteger i = 0; i < rowTypes.count; i++)
    {
        NSString* rowType = self.rowTypes[i];
        if ([rowType isEqualToString:type1])
        {
            // create HeaderRowType object and fill its properties. There you also can parse any data from main iPhone app.
            HeaderRowType* type1Row = [self.someTable rowControllerAtIndex:i];
            // type1Row.property1 = ...;
    
        }
        else
        {
            DetailRowType* type2Row = [self.someTable rowControllerAtIndex:i];
            // type2Row.property1 = ...;
            // type2Row.property2 = ...;
        }
    }
    

Done! Use your imagination and create more complex data structures.

like image 34
KepPM Avatar answered Oct 23 '22 16:10

KepPM