iPhone SDK: Как использовать Segmented для управления двумя разными TableView? - PullRequest
0 голосов
/ 24 сентября 2010

Я ищу такой же вопрос, как этот вопрос Нужен подход к отображению таблиц с использованием сегментированного управления?

решение использует единый просмотр таблицы

Но я думаю, что моя проблема немного другая

потому что представление будет иметь сегментированный элемент управления, имеет два выбора: «DHCP» и «Вручную»

Когда я нажму «DHCP», под сегментированным контроллером будет сгруппированная таблица

Это табличное представление недоступно для редактирования, отображает только 3 элемента (IP-адрес, маску, маршрутизатор) в каждой строке

Но если нажать "Вручную", табличное представление станет редактируемым

Может печатать только как строка 1 "IP Address : 169.95.192.1", строка 2 "Subnet mask 255.255.255.0" ...

Так что мой вопрос

<1> Как использовать сегментированное управление для переключения двух разных таблиц?

<2> Как создать редактируемое табличное представление?

большое спасибо за чтение и ответ на этот вопрос.

1 Ответ

0 голосов
/ 24 сентября 2010

верно ... хорошо - вам нужно иметь глобальный BOOL например BOOL isManual;

теперь в каждом из ваших методов UITableViewDatasource вам нужно проверить это bool:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    if(isManual){
        // set cell content for manual
    }
    else{
        //set cell content for DCHP
    }

    return cell;
}

// this function allows you to set a table view cell as editable
// look up UITableView delegate methods for more :)
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    if(isManual){
        return YES;
    }
    else{
        return NO;
    }
}

и аналогичные.

Затем в методе обратного вызова сегментированного управления вы хотите изменить isManual и reloadData в таблице:

- (void)segmentedControlChanged:(id)selector {
    UISegmentedControl *control = selector;
    int selected = [control selectedSegmentIndex];

    if(selected == 0){
            isManual == NO;
        }
        else{
            isManual == YES;
        }
    [self.tableView reloadData];
}

Надеюсь, это немного поможет, хотя и довольно расплывчато. :)

...