UITabBarController的多个视图

时间:2010-03-28 19:32:11

标签: views uitabbarcontroller

我正在尝试构建一个应用程序,其中我有一个包含4个条目的TabBarController。 当我选择第一个条目时,会显示带有UITableView的视图。 这个TableView充满了几个条目。

我想做的是: 当选择该UITableView的输入时,应显示另一个视图;详情。

的.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row == 0) {

if(self.secondView == nil) {
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secondViewController;
[secondViewController release];
}

// Setup the animation
[self.navigationController pushViewController:self.secondView animated:YES];

}
}

·H

#import <UIKit/UIKit.h>
#import "SecondViewController.h"


@interface FirstViewController : UIViewController {

SecondViewController *secondView;

NSMutableArray *myData; 
}
@property (nonatomic, retain) SecondViewController *secondView;
@property (nonatomic, copy, readwrite) NSMutableArray* myData;

@end

这是我到目前为止所做的。

不幸的是..代码运行,第二个视图没有显示。

1 个答案:

答案 0 :(得分:1)

您的第一个视图控制器是否包含在UINavigationController中?设置UITabBarController时,应该添加UINavigationControllers而不是UIViewController子类,例如:

FirstViewController *viewControl1 = [[FirstViewController alloc] init];
UINavigationController *navControl1 = [[UINavigationController alloc] initWithRootViewController:viewControl1];
UITabBarController *tabControl = [[UITabBarController alloc] init];
tabControl.viewControllers = [NSArray arrayWithObjects:navControl1, <etc>, nil];
//release everything except tabControl

此外,根据您的代码,您不需要将secondViewController保留为ivar,因为UINavigationController会自动保留其视图控制器(并且在您不显示它时保留它将耗尽不必要的内存)。