显示动态原型单元格的弹出视图

Ale*_*dre 5 cell storyboard popover ios5 segue

我正在开发一个带有自定义拆分视图的Ipad应用程序.在主视图中我有一个tableViewController.我在导航栏中添加了一个带有添加按钮的项目.此按钮链接(我使用故事板)与popover segue链接到另一个tableViewController,其中包含一些输入数据的单元格.按钮"save"将popover视图与masterView列表中的添加项目相关联.我接下来要做的是链接主视图的原型单元格到另一个视图,以使用户能够编辑所选项目.我想将这个视图与popover segue链接(就像添加按钮一样)并且问题在哪里:我从xcode得到一个红色问题:无法编译连接:=> anchorView = >>.

这是我的代码样本,工作正常.当我点击一个单元格进行编辑时,我想做同样的事情.

masterSplitView表

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"assetCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    // Configure the cell...
    AssetModel *myAssetModel = [self.arrayAsset objectAtIndex:indexPath.row];
    cell.textLabel.text = myAssetModel.name;
   // cell.textLabel.text = @"test";

    return cell;

}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"addAssetSegue"]){
        AddAssetTVC *addAssetTVC = segue.destinationViewController;
        addAssetTVC.delegate = self;

        UIStoryboardPopoverSegue* popoverSegue = (UIStoryboardPopoverSegue*)segue;
        [addAssetTVC setPopoverController:[popoverSegue popoverController]];

    }

}

- (void) theSaveButtonOnTheAddAssetTVCWasTapped:(AddAssetTVC *)controller{
    [controller.navigationController popViewControllerAnimated:YES];
    [self reloadCache];
    [self.tableView reloadData];
    [self viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

以及添加视图的save方法:

- (IBAction)save:(id)sender{
    [popoverController dismissPopoverAnimated:YES];
    NSLog(@"Telling the ADDASSET Delegate that Save was tapped on the AddAssetTVC");

    {...unrevelant coredata methods}

    [self.delegate theSaveButtonOnTheAddAssetTVCWasTapped:self];
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的阅读,

亚历山大

小智 4

我有同样的问题。通过使用自定义转场解决了这个问题。在类的prepare方法中:

  1. 获取源视图控制器,它可以是自定义控制器,也可以是UITableViewController
  2. 抓取目标控制器
  3. 创建一个UIPopoverController用目标控制器初始化的
  4. 获取当前选中行的单元格
  5. 将弹出窗口存储为目标控制器上的属性(这样您可以将其关闭并且不会被释放)
  6. 使用单元格frame作为显示弹出窗口CGRect
  7. 设置弹出框的大小,否则它将达到最大尺寸

这是一些示例代码:

UITableViewController *tvc = (UITableViewController *)self.sourceViewController;
DetailsViewController *details = (DetailsViewController *)self.destinationViewController;    
UITableViewCell *cell = [tvc.tableView cellForRowAtIndexPath:[tvc.tableView indexPathForSelectedRow]];

UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:details];

details.popoverController = pop;

CGSize size = CGSizeMake(640, 460);
pop.popoverContentSize = size;


[pop presentPopoverFromRect:cell.frame
                     inView:tvc.tableView 
   permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown 
                   animated:YES];
Run Code Online (Sandbox Code Playgroud)