1

在 Objective C 中的任何东西中,这一次又一次让我最疯狂。(如果我有任何术语错误,请原谅)

(使用弧)

使用ddmenucontroller我加载了 2 个类似于 Facebook 应用程序的菜单;左控制器和右控制器

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

当从 AddFriendsViewController.h 和 m 添加好友时,我需要通过调用 -(void) getFriends 来更新 RightController 中的好友列表

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

请让我知道任何人想看什么代码;我已经删除了我尝试过的所有内容,因为它不起作用......

4

3 回答 3

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
于 2013-07-25T14:48:30.790 回答
0

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

右控制器.h

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

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

}
+ (RightController *)sharedController;

-(void) getFriends;

@end

右控制器.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];

}

谢谢您的帮助!

于 2013-07-25T15:20:32.490 回答
0

您是否尝试过使用KVO?这就是它的创建目的。

于 2013-07-25T20:11:59.813 回答