在另一个类中调用方法的最简单方法?

时间:2013-07-25 14:41:37

标签: objective-c

目标C中的任何事情都让我一次又一次地疯狂。 (如果我有任何错误的话,请原谅我)

(使用Arc)

使用ddmenucontroller我加载2个菜单,类似于Facebook App;左控制器和右控制器

在RightController.h中,我拉了一个httprequest并加载了一个朋友列表。 从LeftController.h和m加载,我有一个添加好友视图控制器。

当从AddFriendsViewController.h和m添加朋友时,我需要通过调用 - (void)getFriends

来更新RightController中的朋友列表

我已经尝试过通知,我已经尝试过设置共享实例,似乎没有什么对我有用:(我从大多数示例中看到的最大问题是我仍然需要在RightController中的viewDidLoad上调用getFriends。我和每次改变时,它都会在加载RightController时崩溃

请让我知道任何人希望看到的代码;我删除了我尝试的所有内容,因为它无法正常工作......

3 个答案:

答案 0 :(得分:1)

您需要从视图和视图控制器(想想MVC)中抽象出下载和数据存储。也许有一个单身人士来管理你的所有数据。现在,任何视图控制器都可以触发新的下载,任何视图控制器都可以观察到新数据如果您的单身人士获得新数据,请发布通知。在视图控制器中,在显示时添加为观察者,并在隐藏时删除。视图控制器还可以通过显式调用单例来随时检查新数据。


您的单身人士界面可能类似于:

#define MY_NEW_DATA_NOTIFICATION @"MY_NEW_DATA_NOTIFICATION"

@interface MyDataController : NSObject

@property (strong, nonatomic, readonly) NSArray *downloads;

+ (MyDataController *)sharedController;

- (void)startDownload;

@end

答案 1 :(得分:0)

Wain:你的回答让我走上正轨

RightController.h

@interface RightController : UIViewController
{
    NSMutableArray *offerArray;
    NSArray *find_list;

    UITableView *myTableView;
    NSMutableArray *dataSource;
    NSMutableArray *tableData;
    NSMutableArray *addrData;

}
+ (RightController *)sharedController;

-(void) getFriends;

@end

RightController.m

- (id)init {
    if ((self = [super init])) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getFriends) name:@"rightControllerGetFriends" object:nil];
    }
    return self;
}

和AddFriendsViewController.m

- (IBAction) TellAFriendPressed:(id)sender
{
...
[[NSNotificationCenter defaultCenter] postNotificationName:@"rightControllerGetFriends"
                                                            object:nil];

}

感谢您的帮助!

答案 2 :(得分:0)

您是否尝试过使用KVO?这就是为它创造的东西。