我正在尝试从我的UIViewController切换回我的UITableViewController但是显然它不能按照我想要的方式工作。 我从一开始就用故事板创建了我的界面,所以我并没有真正通过代码从一个View移动到另一个View。到目前为止,我只是通过故事板轻松实现了每个sergues的观点。但是,当我尝试回到之前的视图时,将实现一个新的ViewController,因此我存储在旧视图中的所有数据都“丢失”。
实际上我没有代码可以呈现给你(因为有警告),但情况是:
- >我在我的UITableView中有一个MutableArray存储内容。
- >用户点击扫描按钮,扫描应在我的阵列中导入的新项目。
- >当试图回到我的tableView时,有一个新的控制器让我感到困惑,不知道我存储在旧表中的数据。
那么我该如何简单地回到我的旧控制器,以防止一直创建一个新的控制器?
sergue-push是否总是创建一个新的控制器?
(问题可能很简单,但我对这些东西不熟悉。尝试了搜索功能提供的一些结果,但没有一个工作:()
/ edit:Popback问题已经解决但阵列填充问题仍然存在。代码:
GeneralSettings *sharedGS = [GeneralSettings sharedInstance];
sharedGS.strEAN = [[NSString alloc] initWithString:strCheckString];
[sharedGS.listArray insertObject:strCheckString atIndex:0];
NSLog(@"Anzahl der EAN-Codes: %d\nErster Code: %@\n In Variable: %@", sharedGS.listArray.count, [sharedGS.listArray objectAtIndex:0],sharedGS.strEAN);
sharedGS.strEAN中的数据(“83274572354”即) listArray(null)中的数据
答案 0 :(得分:20)
你不要回头。这将创建前一个控制器类的新实例。你回来了。你可以完成这两种方式。
1:当您想要返回(弹出)平板电脑视图控制器时,在以下语句中放入代码。
[self.navigationController popViewControllerAnimated:YES];
2:如果你想在故事板中这样做,你需要实现以下自定义segue类:
实施
// PopSegue.m
#import "PopSegue.h"
@implementation PopSegue
- (void) perform {
UIViewController *src = (UIViewController *) self.sourceViewController;
[src.navigationController popViewControllerAnimated:YES];
}
和标题
// PopSegue.h
#import <UIKit/UIKit.h>
@interface PopSegue : UIStoryboardSegue
@end
将此方法放在UIViewController中,将属性设置回UITableViewController:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"goBackToTableView"]) {
[[segue destinationViewController] set{whatEverProperyYouWantTo}: {valueOfPropertyToSet}];
}
}
答案 1 :(得分:3)
@ T.J 采用这种方法时 “2:如果你想在故事板中这样做,你需要实现以下自定义segue类:
执行“
并根据以下the document, “触发Segue时配置目标控制器 当触发segue时,iOS会执行以下任务:
它实例化目标视图控制器。 它实例化一个新的segue对象,该对象包含被触发的segue的所有信息。 注意:popover segue还提供了一个属性,用于标识用于控制目标视图控制器的弹出控制器。 它调用源视图控制器的prepareForSegue:sender:方法,传入新的segue对象和触发segue的对象。 它调用segue的perform方法将目标控制器带到屏幕上。实际行为取决于正在执行的segue的类型。例如,模态segue告诉源视图控制器呈现目标视图控制器。 它释放segue对象,segue完成。“
它再一次实例化呈现viewController,然后在调用“perform”的覆盖方法后dealloc。因此,最好根据the document选择您提交的第一种方法或委托方法。
谢谢