0

我想修复 UITableView 的标题,以便在滚动表格视图时标题粘在顶部。

我做了一些谷歌搜索,似乎最干净的方法是使用 UINavigationController 的子类并使其遵循 UITableDataSource 和 UITableViewDelegate 协议,并在 UINavigationController 的视图中添加标题视图和 tableView 并实现所有协议方法。

基本上我正在做这个stackoverflow问题的选择答案

我在 didSelectRowAtIndexPath 方法中有以下内容:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:nil bundle:nil] autorelease];
    viewController2.title = @"test";
    [self pushViewController:viewController2 animated:YES];
}

如果我在最后一行有“self.navigationController”(如果这是 UITableViewController,通常会这样)而不是“self”,那么什么也不会发生(当然,因为 self 是 UINavigationController)但是当我有“self”作为它目前,viewController@ 的视图没有被推送,但是发生了一些事情,因为导航栏发生了变化,出现了“测试”,但固定的标题和 UITableView 仍然存在。更有趣的是,当我第一次点击表格视图时,只有“测试”出现在导航栏中,但没有出现“返回”按钮。我必须再次点击行(因为在我第一次点击后 UITableView 仍然存在),以便“返回”按钮显示在导航栏中......

所以简而言之

1)当我点击表格视图行时,我应该怎么做才能使 viewController2 的视图显示?

2)如何让“返回”按钮在第一次点击时显示?

我的 UINavigationController 的 init 方法如下:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self.navigationController setNavigationBarHidden:NO];

        UIView *mainView = [[[UIView alloc] initWithFrame:CGRectMake(0, statusBarHeight+navBarHeight, 320, 480-statusBarHeight-navBarHeight-tabBarHeight)] autorelease];

        UIImage *stripedBackground = [UIImage imageNamed:@"bg.png"];
        UIImageView *background = [[[UIImageView alloc] initWithImage:stripedBackground] autorelease];
        background.frame = CGRectMake(0, 0, 320, mainView.frame.size.height);
        [mainView addSubview:background];

        UIImage *header = [UIImage imageNamed:@"header.png"];
        UIImageView *headerView = [[[UIImageView alloc] initWithImage:header] autorelease];
        headerView.frame = CGRectMake(0, 0, header.size.width, header.size.height);
        [mainView addSubview:headerView];

        UITableView *streamTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, header.size.height, 320, mainView.frame.size.height-header.size.height) style:UITableViewStylePlain] autorelease];
        [streamTableView setDelegate:self];
        [streamTableView setDataSource:self];
        [mainView addSubview:streamTableView];
        [header release];

        [self.view addSubview:mainView];
    }
    return self;
}
4

0 回答 0