我有两个视图控制器。我首先打开,当我按下按钮时,第二个视图控制器被推到导航控制器堆栈上。在这里,在第二个视图控制器中,我有一个表视图,当我点击某些行时,它们被选中(如复选框),并且与该行相关的一些数据被添加到数组中。现在,当我完成选择后,我想返回到第一个视图控制器并使用该数组。怎么做?现在我的应用程序是这样工作的:我有一个委托协议,然后是一个对象,其中我有属性数组,我可以从整个应用程序访问该对象及其数组......但我真的不喜欢那样。这是正确/最好/最简单的方法吗?
我有一个委托协议,然后是其中有属性数组的对象,我可以从整个应用程序访问该对象及其数组......但我真的不喜欢这样。这是正确/最好/最简单的方法吗?
委派是此处使用的正确模式,但您所描述的并不是委派,而是使用全局变量。也许您正在将全局变量存储在您的应用程序委托中——如果可以的话,通常您可以避免这种情况。
以下是代码的粗略轮廓:
SecondViewController.h:
@protocol SecondViewControllerDelegate;
@interface SecondViewController;
SecondViewController : UIViewController
{
id<SecondViewControllerDelegate> delegate;
NSArray* someArray;
}
@property (nonatomic, assign) id<SecondViewControllerDelegate> delegate;
@property (nonatomic, retain) NSArray* someArray;
@end
@protocol SecondViewControllerDelegate
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController;
@end
SecondViewController.m:
@implementation SecondViewController
@synthesize delegate;
@synthesize someArray;
- (void)dealloc
{
[someArray release];
[super dealloc];
}
- (void)someMethodCalledWhenUserIsDone
{
[delegate secondViewControllerDidFinish:self];
}
FirstViewController.h:
#import SecondViewController
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
{
...
}
@end
FirstViewController.m:
@implementation FirstViewController
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController
{
NSArray* someArray = secondViewController.someArray
// Do something with the array
}
@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)