如何访问应用程序委托的对象到RootViewController

时间:2010-12-28 20:09:14

标签: objective-c xcode uitableview

我有一个基于导航的应用程序,我在其中调用Web服务。我已经完成了后台所需的所有工作以吸收Web服务。唯一剩下的就是在Table视图中显示它。 我想要显示的数据存储在Mutable数组中,我可以在控制台中查看数据,这是在app delegate中。我只是想以某种方式将这些数据传递给root,以便我可以在表视图中显示它。 有人可以帮我这个。

4 个答案:

答案 0 :(得分:5)

你可以试试这个:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
cell.textLabel.text = [appDelegate.yourArray objectAtIndex: indexPath.row];

更聪明的做法是在根视图中创建一个NSMutableArray实例,然后从appDelegate数组中获取该源。

答案 1 :(得分:5)

在appDelegate .h文件中

@property(nonatomic,retain)NSMutableArray *array;

在AppDelegate.m文件中

@synthesis array;

在rootViewController文件中

 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
 NSLog(@"array is %@",appDelegate.array);

答案 2 :(得分:0)

我可能会改变您的设计方法并创建一个获取和保存数据的控制器。您正在将AppDelegate耦合到您的控制器并使其负责数据检索。这不一定适合iOS中的MVC方法。

通过创建一个负责数据检索的数据对象类(例如,调用/缓存Web服务数据),可以使代码更加可重用,并且更容易被程序部分使用。

答案 3 :(得分:0)

在Appdelgate.h中创建你的字符串

@property (strong, nonatomic) NSString *deviceToken;
+ (AppDelegate *)getAppDelegate;

Appdelegate.m工具

+ (AppDelegate *)getAppDelegate{
  static AppDelegate* mAppDelegate = nil;
  if(!mAppDelegate)
  {
     UIApplication *lApplication = [UIApplication sharedApplication];
     if([lApplication.delegate isKindOfClass: [AppDelegate class]])
     {
         mAppDelegate = (AppDelegate *)lApplication.delegate;
     }
   }
 return mAppDelegate;
}

并将此字符串访问到您需要的位置,为appdelegate创建变量

AppDelegate *mLoginAppDelegate;

在viewdidload中写下这些行

if(!mLoginAppDelegate)
    mLoginAppDelegate = [AppDelegate getAppDelegate];

NSLog(@"Device Token: %@", mLoginAppDelegate.deviceToken);