Как вставить UIWebView между UITableViewCells, когда я нажимаю на accessoryButtonTappedForRowWithIndexPath? - PullRequest
0 голосов
/ 23 сентября 2010

Мне нужно отобразить UIWebView под UITableViewCell, когда пользователь выбирает нужную ячейку, нажав на accessoryButtonTappedForRowWithIndexPath.

Например, у меня есть три строки: Дом, Офис и История, которые отображаются в табличном представлении. Если пользователь выбирает Office, то сведения в веб-представлении должны отображаться в строке офиса или ячейке офиса.

если пользователь выбирает Дом, то детали в веб-просмотре должны отображаться под строкой Дома или ячейкой Дома.

Я надеюсь, что вы понимаете мое намерение, что я действительно хочу сказать.

Спасибо, Мадан Мохан.

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

Другой подход

@implementation TableViewController

-(id) initWithStyle:(UITableViewStyle)style {
    if (self = [super initWithStyle:style]) {
        self.editing = NO;
        selectedCell = -1;
    }
    return self;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 3;
}

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == selectedCell) {
        return 150.0;
    }
    return 50.0;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *CellIdentifier = @"Cell";
    if (indexPath.row == selectedCell) {
        CellIdentifier = @"CustomCell";
    }

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        if (indexPath.row == selectedCell) {
            cell = [[[CellWithWebView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        } else {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }

        cell.selectionStyle = UITableViewCellSelectionStyleGray;
    }

    cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    selectedCell = indexPath.row;
    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];
    [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];
    [tableView endUpdates];
    [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    selectedCell = -1;
    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];
    [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];
    [tableView endUpdates];
    [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
0 голосов
/ 23 сентября 2010

Вам нужно будет рассчитать положение ячейки относительно основного вида (того, где находится ваш tableView).

Предположим, у вас есть иерархия, подобная

mainView
 |--myTable (UITableView*)
 |   |--Cell1
 |   |--Cell2
 |   |--Cell3
 |--myWebView (UIWebView*)

Это что-то вроде

float y = myTable.frame.origin.y+selectedCell.frame.origin.y+selectedCell.frame.size.height;

myWebView.frame = CGRectMake(myTable.frame.origin.x, y, mainView.bounds.size.width, mainView.bounds.size.height-y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...