Добавить унаследованное подпредставление на мой взгляд - PullRequest
0 голосов
/ 20 января 2011


В настоящее время я работаю над проектом с большим сходством с большим обзором.Я бы знал, есть ли способ отправить подпредставление из корневого класса в унаследованный класс.

Вот мой RootViewController:

@class CustomView;
@interface RootViewController : UIViewController {
       IBOutlet CustomView  *_aCustomView;
}
@end

@implementation RootViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    UISwipeGestureRecognizer *swipRecognizer;

    // swipe left management
    swipRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self 
                                                               action:@selector(handleSwipeFrom:)];
    swipRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
    swipRecognizer.numberOfTouchesRequired = 2;
    swipRecognizer.delegate = self;
    [self.view addGestureRecognizer:swipRecognizer];
    [swipRecognizer release];
}

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer
{
    NSLog(@"swip detected");
    [self.view addSubview:_aCustomView];
}

HomeViewController:

@interface HomeViewController : RootViewController {
}
@end

Я бы создал некоторый ViewController, унаследованный от моего RootViewController, как этот HomeViewController, чтобы сохранить строковый код.Когда я нахожусь в своем HomeViewController, я хорошо обнаруживаю свое перелистывание, но мне еще не удалось добавить свой пользовательский subView (исходящий из моего RootViewController) в мой HomeViewController.

Большое спасибо.С уважением,
kl94

Ответы [ 2 ]

0 голосов
/ 20 января 2011

Ну, я нахожу решение.Моя проблема была в том, что я попытался добавить объект IBOutlet без инициализации. Надеюсь, я не пожалею об этом позже:

В моем HomeViewController я переопределил метод initWithNibName:bundle::

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
    }
    return self;
} 

И мой RootViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:@"RootViewController" bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
    }
    return self;
} 
0 голосов
/ 20 января 2011

Вы должны добавить метод конструктора к вашему пользовательскому представлению, который инициализирует ваше представление объектом из вашей модели.

Например:

В вашем RootViewController у вас есть объект Customer и CustomerViewотображение информации об этом клиенте.

В CustomerView вы должны создать метод:

-(id) initWithFrame:(CGRect) frame customer:(Customer) customer;

Если вам нужно отобразить тот же CustomerView в вашем HomeViewController, просто добавьте объект Customer в качестве свойстваВаш HomeViewController и в viewDidLoad просто инициируйте CustomerView с:

CustomerView *customerView = [[CustomerView alloc] iniFrame:CGRectMake(...) customer:currentCustomer;
[self.view addSubView:customerView];
[customerView release];

Надеюсь, это поможет, Винсент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...