导航堆栈中的 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