导航堆栈中的 iOS 6 Storyboard UITableView 没有动画返回

Posted

技术标签:

【中文标题】导航堆栈中的 iOS 6 Storyboard UITableView 没有动画返回【英文标题】:iOS 6 Storyboard UITableView in navigation stack does not Animate back 【发布时间】:2012-12-17 06:13:29 【问题描述】:

我在 UINavigationController 中嵌入了一个 UITableViewController。我只在 ios 6 中使用 Storyboard。当我点击 Reports Row 时,我会在右侧看到一个不错的 Push 动画。当我按下 Auto Generated Back 按钮时,我的导航标题会消失并动画到左侧,但我的 UITableView 突然出现了。我的目标是让 UITableview 有一个标准的推送动画,就像按下后退按钮时的标准一样。希望这是帮助我调试所需的相关代码。我完全不知所措。当我导航回导航树时,我在深入研究的每个视图中都看到了相同的行为。它们都是 UITableViewController 的子类。

在我获得更多声望点之前,我无法发布我的 Storyboard 的图片。如果需要帮助查看层次结构,我可以将其图片通过电子邮件发送给某人。

我的故事板层次结构是:

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 的动画。

【问题讨论】:

你可以把照片发邮件给我,我看看。 rdelmar@comcast.net 刚刚发送。感谢您查看... 对不起,我没有发现任何问题(据我所知)。如果你能把整个项目发给我,我可能会告诉更多。 好的...我需要在明天删除一些 URL 代码才能执行此操作。如果明天下午我还不能弄明白,我就发给你。再次感谢您花时间查看... 【参考方案1】:

好的,找出我的问题所在。在我的最顶层对象 TableViewController 中,我有一个 (void)viewWillAppear 以及一个 (void)viewDidAppear 方法。在这些方法中,我必须添加 [super viewWillAppear:animated];以及 [super viewDidAppear:animated];他们每个人的线路。这导致动画重新开始工作。我忘记了我重写了那些来做一些自定义逻辑。

【讨论】:

以上是关于导航堆栈中的 iOS 6 Storyboard UITableView 没有动画返回的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 导航栏在 Storyboard 上的第二个 ViewController 中无法访问

从 AppDelegate 导航 iOS Storyboard ViewController

iOS在导航堆栈中的视图控制器之间循环

从Xamarin Forms中的iOS中的App.OnSleep弹出导航堆栈

子视图控制器中的导航堆栈

React Native:iOS 中的透明堆栈导航器不起作用