iPhone - 单元格内的按钮将新视图推送到屏幕上

Posted

技术标签:

【中文标题】iPhone - 单元格内的按钮将新视图推送到屏幕上【英文标题】:iPhone - button within cell to push a new view onto screen 【发布时间】:2011-03-22 18:02:15 【问题描述】:

大家好,我好像遇到了问题。我有一个应用程序(基于视图),它在屏幕的下半部分显示了一个 UITableView,选择了一个单元格,然后调出一个占据屏幕底部的自定义单元格。我在这个单元格的右下角有一个“更多信息”按钮,当它被选中时,我希望它打开一个新的 NIB 文件,但是我唯一能做的就是从屏幕上删除 tableView ..我不确定在“addSubview”之前使用什么,因为它不是我认为的 self.view。

- (void)moreInfoButton:(id)selector
    NSLog(@"Button Pressed");
    MoreInfo *mivc = [[MoreInfo alloc] initWithNibName:@"MoreInfo" bundle:nil];
    [self.tableview removeFromSuperview];
    //[self.view addSubview:(UIView *)mivc];
    [self.navigationController pushViewController:mivc animated:YES];
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"List of Events" style:UIBarButtonItemStylePlain target:nil action:nil];
    self.navigationItem.backBarButtonItem = backButton;
    [backButton release];
    [mivc release];


另外,(UIView *) 也不能解决问题。有什么建议吗?

附: UITableView根本不用navigationController,就是table,会不会是这个问题?

另外,如果我选择只推送一个新视图,而不使用该视图的 navigationViewController,这可能吗?

【问题讨论】:

【参考方案1】:

如果不了解您的程序,我无法回答您的导航控制器问题。要回答您的其他问题,无需使用导航控制器,您只需添加一个新视图:

newViewVC = [[NewViewVC alloc]initWithNibName:@"NewViewVC" bundle:nil];
[self.view addSubview:newViewVC.view];

通常 newViewVC 在您的 .h 中声明,因此您可以稍后发布它。

【讨论】:

当使用这种方式时,在NewViewVC中,我有一个按钮可以返回上一个视图,其内容只是[self.view removeFromSuperview],但是它只会在点击两次时关闭,有什么理由吗? 如果您以某种方式实例化并添加两次 NewViewVC 会导致这种情况。如果您还没有看过他们,请查看关于 iPhone 应用程序开发的斯坦福视频:link【参考方案2】:

我找到了一种简单的方法:将其作为模态推送。

- (void)moreInfoButton:(id)selector
    NSLog(@"Button Pressed");
    MoreInfo *mi= [[MoreInfo alloc] initWithNibName:@"MoreInfo" bundle:nil];
    [self presentModalViewController:mi animated:YES];

所需要的只是新 nib 文件中的后退按钮。

【讨论】:

以上是关于iPhone - 单元格内的按钮将新视图推送到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

当点击collectionView单元格内的按钮时,如何从tableViewCell内的collectionView获取表视图行并推送到viewController

将新视图推送到导航堆栈时,UIToolbar 按钮消失

将新视图推送到UINavigationController iPhone SDK

UIPopovercontroller 在将新的视图控制器推送到 navccontroller 后调整大小

如何将新的 viewController 推送到另一个视图控制器中的现有视图中?

Iphone UIView 父方法调用