2012-03-22 2 views
0

Мой вопрос две части:IOS - UITableView с пользовательской рамкой и пользовательской ячейке для отображения UIPopOver от него

Часть 1:

У меня есть UITableView, который имеет 4 строки, когда пользователь нажимает на любой клетке, он будет отображать внутренний UITableView, я расширил размер мастера UITableView, а затем вставить внутреннюю UITableView

internalTableView = [[InternalApartmentTableViewController alloc] initWithFrame:CGRectMake(0, 44, 550, (([[tableContent objectAtIndex:indexPath.row] count] - 1) * 44))]; 
[cell addSubview:internalTableView]; 

didSelectedRow является:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
if (selectedInternal != -1) { 
    selectedInternal = -1; 
} else { 
    selectedInternal = indexPath.row; 
    [internalTableView removeFromSuperview]; 
    [internalTableView release]; 
} 
[tableViews reloadData]; 

}

я тестировал приложение, используя небольшое количество строки для внутреннего UITableView, высота = 700, и все работает отлично, между тем, когда я использовал реальные данные, высота = 2500, а когда отображаемые данные, высота появляется около = 1000, мне не нужно прокручивать внутренний UITableView, прокручивается только мастер UITableView.

Итак, как я могу расширить размер фрейма UTableView столько, сколько захочу?

Часть 2:

Во внутреннем UITableView, я использовал пользовательские ячейки, которые содержат метки и изображения и 2 кнопки, одна из кнопок, когда он нажал, я хочу показать UIPopOver, откуда его это, я не могу определить место кнопки в представлении, на самом деле, я не могу понять, какой вид я должен нужно использовать для отображения UIPopOver на экране с помощью

[popoverController presentPopoverFromRect: //(How can i get the rect for the button) 
        inView: //(in which view should the PopOver appear, master UITableView or Internal UITableView or Custom Cell) 
        permittedArrowDirections:UIPopoverArrowDirectionLeft 
        animated:YES]; 

Любая помощь будет оценили.

+1

Встраивание один вид таблицы внутри другой звучит как неприятности. Предложение Apple о том, чтобы обрабатывать подобные дела (в некоторых [пример кода] (https://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html) из прошлогоднего WWDC) заключается в том, чтобы добавить еще строк ... это может быть проще. – rickster

+0

+1 для вас @rickster, тогда часть 1 вопроса решена (в принципе), то как насчет части 2? – Scar

+1

Ну, теперь больше нет внутреннего вида таблицы, поэтому попкор не будет оттуда. :) Возможно, что (ранее внешний) вид таблицы - это то, что вы хотите. – rickster

ответ

1

// при БТН заказного ячейки нажимается

if(![tempPopover isPopoverVisible]) 
{ 

    UIButton* btn=(UIButton *)sender; 
    NSIndexPath*indexpath=[NSIndexPath indexPathForRow:btn.tag inSection:0]; 
    cell=(customCell *)[tableView cellForRowAtIndexPath:indexpath]; 

     popoverController *objView = [[popoverController alloc] init]; 

     tempPopover = [[UIPopoverController alloc] initWithContentViewController:objView]; 
     [tempPopover setPopoverContentSize:CGSizeMake(160, 160)]; 
     [tempPopover presentPopoverFromRect:CGRectMake(655, cell.contentView.frame.origin.y-105, 150, 150) inView:cell.contentView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

}