Как использовать действие UIButton для изменения NSArray, который используется для заполнения UITableView? - PullRequest
0 голосов
/ 31 марта 2011

Я создаю новое приложение с четырьмя наборами данных, которые очень похожи. Я хочу сделать четыре кнопки UIB для перехода к одному UITabBar с четырьмя UITableView. Я не хочу делать четыре кнопки, которые нажимают на четыре набора таблиц. Я полагаю, что создание приложения с 13 UIViews сделает его больше, чем нужно. Итак, я должен выяснить, как заставить действие UIButton изменить данные, которые получают таблицы. Я активно работаю над этим проектом. Любые предложения будут полезны. Спасибо.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Чтобы изменить источник данных табличных представлений, вам нужно изменить то, что возвращается из numberOfRowsInSection в вашем делегате таблицы.Один из способов сделать это - использовать перечисление для представления набора данных, который я хочу использовать, и иметь локальную переменную для сохранения выбранного.

typedef enum
{
    DataSetOne,
    DataSetTwo
} DataSetEnum

@property(nonatomic, retain) DataSetEnum dataset;
@property(nonatomic, retain) NSArray *datasetone;
@property(nonatomic, retain) NSArray *datasettwo;

- (void) viewDidLoad
{
     dataset = DataSetOne;
}
- (IBAction) buttonPressed
{
     dataset = DataSetTwo;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     if(dataset == DataSetOne)
     {
          return [self.datasetone count];
     }
     else if(dataset == DataSetTwo)
     {
          return [self.datasettwo count];
     }
}

А затем в cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     if(dataset == DataSetOne)
     {
           //configure cell
     }
}
0 голосов
/ 31 марта 2011

Если ваши данные похожи, вы можете просто установить данные из переменной IBAction каждой кнопки:

NSArray* data = ...

Затем в вашем методе кнопки:

-(IBAction*)clickedButton1:(id)sender {
    data = [self getButton1Data]
    [self reloadAll]
}
...