Проблема: Tabbar Controller + Navigation Controller: программно - PullRequest
0 голосов
/ 22 сентября 2011

Привет, ребята,

Я пытаюсь создать приложение с контроллером панели вкладок и контроллером навигации.Но у меня возникают некоторые проблемы ... Когда я пытаюсь запустить popViewController во втором представлении, происходит сбой приложения.Кто-то знает, что происходит?

Мой делегат:

// -- PranchetaAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    self.tabBarController = [[UITabBarController alloc] init];

    NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:1];

    PlayersViewController* playersViewController = [[PlayersViewController alloc] initWithTabBar];

    self.navigationController = [[UINavigationController alloc] initWithRootViewController:playersViewController];

    [localControllersArray addObject:self.navigationController];

    [self.navigationController release];

    self.tabBarController.viewControllers = localControllersArray;
    [self.window addSubview:self.tabBarController.view];

    [self.window makeKeyAndVisible];

    [self.navigationController release];
    [localControllersArray release];

    return YES;

}

Мой первый взгляд:

// -- PlayersViewsController.m

- (id)initWithTabBar {

    if (self)
    {

        self.title = @"Players";
        self.tabBarItem.image = [UIImage imageNamed:@"PlayersTabBarIcon.png"];

        CustomNavigationBarButton *addButtonView = [[CustomNavigationBarButton alloc] initWithImage:@"AddButton.png" withSelected:@"AddButtonSelected.png"];

        [addButtonView addTarget:self action:@selector(gotoCreatePlayers) forControlEvents:UIControlEventTouchUpInside];

        UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithCustomView:addButtonView];

        self.navigationItem.rightBarButtonItem = addButton;

        [addButton release];
        [addButtonView release];

    }

    return self;

}

- (void)gotoCreatePlayers {

    CreatePlayersViewController *createPlayer = [CreatePlayersViewController new];
    [self.navigationController pushViewController:createPlayer animated:YES];
    [createPlayer release];

}

Когда я нажимаю свой второй вид, я пытаюсь вернуться в навигацию.Но приложение вылетает ...

Ошибка назначена:

// --  main.m
int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

Спасибо, ребята!

1 Ответ

0 голосов
/ 22 сентября 2011

попробуйте это:

измените:

CreatePlayersViewController *createPlayer = [CreatePlayersViewController new];

на:

CreatePlayersViewController *createPlayer = [CreatePlayersViewController alloc];

также, если есть какие-либо методы init для вызова, чем это должно выглядеть следующим образом

CreatePlayersViewController *createPlayer = [[CreatePlayersViewController alloc]init];

попробуйте что-то вроде этого: ДОБАВЬТЕ ЭТО В ФАЙЛ .h: CreatePlayersViewController *createPlayer затем замените свой код выше следующим:

if (createPlayer ==nil) {
    CreatePlayersViewController *nextView = [[CreatePlayersViewController alloc] initWithStyle:UITableViewStylePlain];
    self.createPlayer = nextView;
    [nextView release];
}
self.meetTheTeam.view.hidden = NO;


[self.navigationController pushViewController:self.meetTheTeam animated:YES];
...