当视图切换时,tabBar消失。为什么?

时间:2012-02-13 02:53:24

标签: objective-c ios xcode

所有

我正在制作带有两个视图的应用TabBar(ScrollView和TableView)。

当应用程序启动时,会出现TabBar按钮,并且可以更改两个视图。

我编写了TableView中的按钮来更改ScrollView,并且查看是更改。 但是TabBar消失了。

某人,请帮忙!建议我。

申请图片 http://www.0502.me/help/xcode_why.png

项目视图控制器(TableView)

#import "FirstViewController.h"
#import "SecondViewController.h"

@implementation FirstViewController

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
        return YES;
    }
}

- (IBAction)pageOne:(id)sender {
//Below code is switch View
    SecondViewController *secondView = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondView"];
    [self presentModalViewController:secondView animated:YES];
}

- (IBAction)pageTwo:(id)sender {
}

- (IBAction)pageThree:(id)sender {
}
@end

第二个视图控制器(ScrollView)

#import "SecondViewController.h"

@implementation SecondViewController

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}


#pragma mark - View lifecycle

-(void)pageLoad:(UIScrollView *)scrollView {
    currentPage = scrollView.contentOffset.x / scrollView.bounds.size.width;
    int pageWidth = self.view.frame.size.width;
    int pageHeight = self.view.frame.size.height;

    prevPage.frame = CGRectMake(
                                pageWidth * (currentPage - 1),
                                0,
                                pageWidth,
                                pageHeight
                                );
    if (currentPage > 0) {
        [prevPage setImage:[NSString stringWithFormat:@"%d", (currentPage - 1) % kPageNum]];
        prevPage.hidden = NO;
    } else {
        prevPage.hidden = YES;
    }

    currPage.frame = CGRectMake(
                                pageWidth * currentPage,
                                0,
                                pageWidth,
                                pageHeight
                                );

    [currPage setImage:[NSString stringWithFormat:@"%d", currentPage % kPageNum]];
    currPage.hidden = NO;

    nextPage.frame = CGRectMake(
                                pageWidth * (currentPage + 1),
                                0,
                                pageWidth,
                                pageHeight
                                );


    if (currentPage < (kPageNum - 1)) {
        [nextPage setImage:[NSString stringWithFormat:@"%d", (currentPage + 1) % kPageNum]];
        nextPage.hidden = NO;
    } else {
        nextPage.hidden = YES;
    }

}


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];

    UIScrollView *scrollView = [[UIScrollView alloc] init];

    scrollView.frame = self.view.bounds;
    scrollView.contentSize = CGSizeMake(self.view.frame.size.width * kPageNum, self.view.frame.size.height);
    scrollView.pagingEnabled = YES;
    [self.view addSubview:scrollView];

    scrollView.delegate = self;

    prevPage = [[PageView alloc] initWithFrame:self.view.bounds];
    [scrollView addSubview:prevPage];

    currPage = [[PageView alloc] initWithFrame:self.view.bounds];
    [scrollView addSubview:currPage];

    nextPage = [[PageView alloc] initWithFrame:self.view.bounds];
    [scrollView addSubview:nextPage];

    [self pageLoad:scrollView];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat position = scrollView.contentOffset.x / scrollView.bounds.size.width;
    CGFloat delta = position - (CGFloat)currentPage;

    if (fabs(delta) >= 1.0f) {
        [self pageLoad:scrollView];
    }
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

1 个答案:

答案 0 :(得分:2)

您将其作为模态视图呈现。如果我理解您的问题,您只想切换UITabBar中的所选项目。你可以这样做:

self.tabBarController.selectedIndex = index;

其中index是一个整数,表示要切换到的UIViewController的索引。在您的情况下,看起来索引应为0。