我有两个UIViewControllers
说ViewController_A
和ViewController_B
我的流程是 A ViewController_A
---> B ViewController_B
---> C ViewController_A
对于A,B和C导航,我有以下情况,
A - 在ViewController_A
我有UITableViewCell
中的100条记录,用户选择任何一条记录,它将推送到ViewController_B
显示来自ViewController_A
的所选记录。
B - 将显示ViewController_A
中的选定数据,并返回“返回”按钮(我可以弹出)。另一件事,有一个UIButton
,如果用户点按此按钮,它会再次显示ViewController_A
,但只显示该记录
C - 我们会从ViewController_B
弹出,然后没有问题,但我又想推,所以我需要#import
ViewController_A
ViewController_B
(因为我已在ViewController_B
中导入了ViewController_A
,因此我无法在ViewController_A
重新导入ViewController_B
,对吧?)会为UIViewControllers
创建碰撞{ {1}}。
在 C 中解决问题的更好方法是什么,一个建议是让另一个`ViewController_D
像ViewController_A
那样显示,但我认为它不正确的方法,因为我已经UI
和coded
了解功能。
需要建议。如果您有任何疑问,请告诉我!
答案 0 :(得分:2)
我明白你用#import指令有问题吗? 我猜你要在.h文件中导入标题?如果是这样,请在.m文件中执行#import;在.h中你应该使用@class YouViewControllerA。
Ex with 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”时,编译器将在编译时执行以下检查:
这样我们就可以阻止头文件被包含在内。 (并且通过扩展它不应该产生任何递归错误。)
换句话说:#import确保头文件只包含一次,这样你就不会遇到递归包含的问题。
答案 1 :(得分:0)
一个解决方案可能就是这个 -
首先在NSUserDefaults中保存所选值,然后在viewController B中单击UIButton时取一个bool。 然后将segue推送到ViewController A并检查Bool的值。 如果是真的那么只打印NSUserDefaults的值,否则打印整套100条记录。