iphone переключается с одного UIViewController на другой - PullRequest
0 голосов
/ 19 мая 2011

У меня есть один контроллер основного вида с именем GuideViewController и другой контроллер представления с именем RestauranterViewController.В GuideViewController у меня есть иерархия UIView, где guideParentView находится в mainView.Теперь я хочу переключиться на другой контроллер представления с именем RestauranterViewController и здесь я загружаю RestauranterViewController.xib поверх GuideViewController.xib, где mainView находится, но я скрываю guideParentView.Теперь я хочу переключиться с RestauranterViewController на GuideViewController.Но я не могу.Может кто-нибудь, пожалуйста, помогите мне?

@class RestauranterViewController;
@interface GuideViewController : UIViewController {
    IBOutlet UIView *mainView;
    IBOutlet UIView *guideParentView;
}
@property(nonatomic,readonly,retain) IBOutlet UIView *mainView;
@property(readwrite,assign) IBOutlet UIView *guideParentView;

Теперь, когда я нажимаю на кнопку переключателя, метод, как показано ниже, вызывает

#import "GuideViewController.h"
#import "RestauranterViewController.h"
@implementation GuideViewController

-(IBAction)select:(id)sender{
    guideParentView.hidden = YES;
    RestauranterView = [[RestauranterViewController alloc] initWithNibName:@"RestauranterViewController" bundle:[NSBundle mainBundle]];
    RestauranterView.view.frame = CGRectMake(0, 100, 299, 220);

    [mainView addSubview: RestauranterView.view];
}

И в RestauranterView, когда я нажимаю на кнопкусделать скрытое представление видимым, но оно терпит неудачу.

@interface RestauranterViewController : UIViewController {
    GuideViewController *GuideView;
}


#import "RestauranterViewController.h"
#import "GuideViewController.h"
@implementation RestauranterViewController

-(IBAction)back:(id)sender{
    GuideView = [[GuideViewController alloc] init];
    GuideView.guideParentView.hidden = NO;
    [self.view removeFromSuperview];
}

Кажется, что он не может вызвать родительский метод.Пожалуйста, помогите мне ...

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

Вы создаете новые экземпляры обоих контроллеров каждый раз, когда намереваетесь двигаться вперед и назад. Это также создает утечку.

Вы действительно должны взглянуть на UINavigationController. Это действительно упростит вашу проблему, если в будущем вам понадобится добавить больше контроллеров. Есть множество учебников о том, как его создать. Вы можете начать с это .

1 голос
/ 21 мая 2011

Наконец я решил это следующим кодом Я могу использовать либо objectAtIndex, либо viewWithTag

-(IBAction)back:(id)sender{
    superView = (UIView *)self.view.superview;
    //UIView *perentView = [[topView subviews] objectAtIndex:6];//Its the Object Index in the XIB file
    UIView *parentView = (UIView *)[superView viewWithTag:177];//I have put a Tag of 177 in the tag field in the XIB.
    parentView.hidden = NO;
    [self.view removeFromSuperview];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...