我想修复UITableView的标题,以便在滚动表格视图时标题会粘到顶部。
我做了一些谷歌搜索,似乎最干净的方法是使用子类UINavigationController并使其遵循UITableDataSource和UITableViewDelegate协议,并在UINavigationController的视图中添加标题视图和tableView并实现所有协议方法
基本上我正在完成此stackoverflow question
的选择答案我在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)但是当我有“自我”时“就目前而言,viewController @的视图没有被推送,但是有些事情发生了,因为导航栏已经改变并出现”test“,但是固定的头部和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;
}