导航堆栈中的iOS 6 Storyboard UITableView不会动画回来

时间:2012-12-17 06:13:29

标签: objective-c uinavigationcontroller ios6 uitableview

我在UINavigationController中嵌入了一个UITableViewController。我只在iOS 6中使用Storyboard。当我点击我的Reports Row时,我会在右边看到一个很棒的Push动画。当我按下“自动生成后退”按钮时,我的导航标题会淡化并向左移动,但我的UITableView会突然出现。我的目标是让UITableview有一个标准的推送动画,就像按下后退按钮时的标准一样。希望这是帮助我调试所需的相关代码。我完全失去了。当我在导航树中导航回来时,我在每个视图中都看到了相同的行为。它们都是UITableViewController子类。

在我有更多声望点之前,我无法发布我的故事板的图片。如果需要帮助查看层次结构,我可以通过电子邮件向某人发送图片。

我的故事板层次结构是:

UITabviewController
-UINavigationViewController
--ReportsVC
---AvaliableEquipmentVC
----AvaliableEquipmentDetailVC

ReportsVC.h

#import <UIKit/UIKit.h>
@interface ReportsVC : UITableViewController
@property (strong, nonatomic) NSMutableArray *reportList;
@end

ReportsVC.m

#import "ReportsVC.h"
#import "AvaliableEquipment.h"

@interface ReportsVC ()

@end

@implementation ReportsVC

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.reportList = [[NSMutableArray alloc] init];

    // List Reports Here
    [self.reportList addObject:@"Avaliable Equipment"];
    [self.reportList addObject:@"Active Lease Business"];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [self.reportList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ReportNameCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    UILabel *reportTitle = (UILabel *)[cell viewWithTag:100];
    NSString *text = [self.reportList objectAtIndex:indexPath.row];
    reportTitle.text = text;
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    switch (indexPath.row)
    {
        case 0: [self performSegueWithIdentifier:@"AvaliableEquipment" sender:nil]; break;
        case 1: [self performSegueWithIdentifier:@"ActiveLeaseBusiness" sender:nil]; break;
    }
}

在我的AvaliableEquipmentVC中,除了查询JSON列表以获取我的TableView数据之外,我没有做任何特别的事情。当我按下通过故事板自动生成的后退按钮时,我没有动画回到UITableViewController ReportsVC。

1 个答案:

答案 0 :(得分:1)

好的,发现我的错误。在我作为最顶层对象的TableViewController中,我有一个(void)viewWillAppear以及一个(void)viewDidAppear方法。在那些方法中我不得不添加[super viewWillAppear:animated];以及[super viewDidAppear:animated];每条线都有。这导致动画再次开始工作。我忘了我覆盖那些做一些自定义逻辑。