Как объединить 2 UIView в 1 контроллер представления?

У меня есть ViewController с 3 представлениями: Rootview, который показывает панель инструментов с UISegmentedControl, tableView и calendarView.

У меня есть XIB для rootView и tableView, но у calendarView нет XIB.

Мне нужно каким-то образом объединить код для загрузки представления календаря, чтобы он соответствовал этому ViewController. Раньше я использовал calendarView как собственный viewController.

Код для календаряView:

// The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
        calendar =  [[TKCalendarMonthView alloc] init];
        calendar.delegate = self;
        calendar.dataSource = self;
    }
    return self;
}

// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView 
{
    UIBarButtonItem *actionButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(dismissCalendarView)];
    self.navigationItem.leftBarButtonItem = actionButton;
    [actionButton release];

    int statusBarHeight = 0;
    CGRect applicationFrame = (CGRect)[[UIScreen mainScreen] applicationFrame];
    self.view = [[[UIView alloc] initWithFrame:CGRectMake(0, statusBarHeight, applicationFrame.size.width, 300.0)] autorelease];
    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    self.view.backgroundColor = [UIColor clearColor];
    self.title = @"Select Workout";
    calendar.frame = CGRectMake(0, 0, calendar.frame.size.width, calendar.frame.size.height);
    NSLog(@"%f height", applicationFrame.size.height);
    [self.view addSubview:calendar];
    [calendar reload];
}

Если я помещу этот код непосредственно в этот новый viewController, он не будет учитывать UISegmentedControl и просто появится при запуске.

Вот код для UISegmentedConrol:

- (void)segmentedControl:(SVSegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)index
{    
    switch (index) 
    {
        case 0: 
        {
            [self.view addSubview: tableView1];
            tableView1.hidden = NO;
            calendar.hidden = YES;
            [calendar removeFromSuperview];
            break;
        }
        case 1: 
        {
            [self.view addSubview: calendar];
            tableView1.hidden = YES;
            calendar.hidden = NO;
            [tableView1 removeFromSuperview];
            break;
        }
    }
}

person Jon    schedule 25.06.2011    source источник


Ответы (1)


Соответствует ли использование двух разных методов инициализации вашим потребностям? initWithNibName:@"nib1" или аналогично initWithNibName:@"nib2"?? В противном случае вам нужно будет указать, чего вы хотите достичь, немного больше

person Tim Specht    schedule 25.06.2011