Несколько просмотров для UITabBarController - PullRequest
0 голосов
/ 28 марта 2010

Я пытаюсь создать приложение, в котором у меня есть TabBarController с 4 записями. Когда я выбираю первую запись, появляется вид с 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 Ответ

1 голос
/ 29 марта 2010

Ваш первый контроллер представления обернут в 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 автоматически сохраняет свои контроллеры представления (и, сохраняя его, когда вы не отображаете, он будет использовать ненужную память).

...