iOS从另一个视图中跳过方法调用

时间:2013-08-08 19:17:26

标签: ios function methods uiviewcontroller

我查了十几个不同的页面,关于如何在跳过方法时从其他视图和实例调用方法,但没有回答。

我将在这里彻底。两个相关的课程:

SpeakersView

的GetData

GetData就在那里,因为我需要从六个不同的类中调用该方法,最好只写一次。

这是GetData.h:

#import <UIKit/UIKit.h>

@interface GetData : UIViewController
-(NSArray *)getTableArray:(NSString *)section :(NSString *)entity;
@end

这是GetData.m:

@interface GetData (){

    NSArray *tableData;
    NSArray *titleData;
    NSArray *splitData;

}

@end

@implementation GetData

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(NSArray *)getTableArray:(NSString *)section :(NSString *)entity{
//Code omitted. Shouldn't really have anything to do with why the method is being skipped.
}

@end

所以这就是我在SpeakersView.m中调用方法的方法:

GetData *GD;

menu_List = [GD getTableArray:@"Speakers" :@"John Smith"];

建议?我应该提一下,从不同的类中以完全相同的方式调用其他方法没有问题。

2 个答案:

答案 0 :(得分:1)

GetData *GD;没有初始化UIViewController。它在那时没有,所以你不能在它上面调用一个方法。

尝试:

GetData *GD = [[GetData alloc] init];

另外,为什么GetDataUIViewController?设为NSObject,如果您只是将其用于该方法,则不需要整个视图控制器。

答案 1 :(得分:0)

调用继承UIViewController的类“GetData”清楚地显示了一个巨大的概念问题。控制器是一个用模型提供视图的类(在MVC模式中)。它不是实用类。

在您的示例中,您还没有实例化控制器。