0

我有两个UIViewControllersViewController_AViewController_B

我的流程是,AViewController_A ---> BViewController_B ---> CViewController_A

对于 A、B 和 C 导航,我有以下情况,

A - 在ViewController_A我有 100 条记录中UITableViewCell,用户选择任何一条,它将推送到ViewController_B将显示从 中选择的记录ViewController_A

B - 将显示从中选择的数据ViewController_A,并有返回按钮返回(我可以弹出)。另一件事,有一个UIButton,如果用户点击它,它将再次显示ViewController_A但只有那条记录

C - 从那时起我们会弹出ViewController_B没有问题,但我又想推,所以我需要#import ViewController_Ain ViewController_B(因为我已经导入ViewController_BViewController_A所以我不能重新导入ViewController_AViewController_B对吧?)将为那些UIViewControllers.

在C中解决问题的更好方法应该是什么,一个建议是让另一个`ViewController_D喜欢并显示与 in 相同,ViewController_A但我认为它不是正确的方法,因为我已经UIcoded功能。

需要建议。如果您有任何疑问,请告诉我!

4

2 回答 2

2

我的理解是您在使用#import 指令时遇到问题?我猜你是在 .h 文件中导入标题?如果是这样,请在 .m 文件中执行 #import;在.h 中你应该使用@class YouViewControllerA。

例如与 AViewController:

。H

@class BViewController

@interface AViewController : UIViewController 
{
  //Your attributes here
}

@end

.m

#import "BViewController.h"

@implementation AViewController

//Some AViewController methods here

@end

对 AViewController 和 BViewController 执行此操作,它应该可以工作。

编辑: #import 指令旨在避免递归错误,所以无论如何你都不应该出错。如果您知道一些预处理,#import 会(自动)执行以下操作:

#ifndef TOTO_HEADER
#define TOTO_HEADER

//your methods here

#endif

更多解释:

当您编写 #import "toto.h" 时,编译器将在编译时进行以下检查:

  • 预处理变量“TOTO_HEADER”是否已定义?(这对应于 ifndef "TOTO_HEADER" 行)
  • 如果不是,我们定义它(这是#define "TOTO_HEADER" 行)并且我们“包含”方法和函数。
  • 如果已经定义,则无需包含方法(因为它们已经包含在内)。

这样,如果已经包含头文件,我们就可以防止它们被包含在内。(并且通过扩展它不应该产生任何递归错误)。

换句话说:#import 确保头文件只包含一次,这样您就不会遇到递归包含的问题。

于 2013-01-24T08:05:25.793 回答
0

一种解决方案可能是这样-

首先将选定的值保存在 NSUserDefaults 中,然后在单击 viewController B 中的 UIButton 时获取 bool。然后将 segue 推送到 ViewController A 并检查那里的 Bool 值。如果它为真,那么只打印 NSUserDefaults 的值,否则打印整组 100 条记录。

于 2013-01-24T08:06:41.793 回答