2012-03-12 149 views
2

一个视图控制器方法我试图调用一个方法多数民众赞成在从NSObject类多数民众赞成在做一些分析我的ViewController。呼叫从NSObject类

我initally叫我做至极下载从我的服务器的一些数据的连接类,然后我通过这个数据交给我已经做了解析类,现在我所要做的是通过这个数据传回视图 - 控制并重新加载在这个视图(即在导航堆栈)

这是造成一些错误,我认为这可能是我试图调用这种方法多数民众赞成在做它的方式。这是我如何称呼它。

MyViewController *myViewController = [[MyViewController alloc] init]; 
    [myViewController initFilterArray:filteredArray]; 

现在,我认为这是导致一个问题,因为我分配一个新的视图控制器对象?是这样吗..不肯定terminoligy的..但是..啊

其结果是,reloaddata只调用

  • numberOfSectionsInTableView
  • 的tableView:numberOfRowsInSection

那就是这样。 任何帮助,将不胜感激。

UPDATE: 所以我想建立一个协议/委托来看看是否能解决我的问题。

所以在我class.h这是我在做什么

@protocol PassParsedData <NSObject> 
@required 
- (void) sendMyArray:(NSArray *)modelArray; 
@end 
//.. 
id <PassParsedData> delegate; 
//.. 
@property (strong) id delegate; 

然后在class.m

//..method 
[[self delegate]sendMyArray:filteredArray]; 
//.. 

这么过来这就是我的课,然后在我的视图控制器我想要的把这种sendMyArray我这样做

viewcontroller.h

#import "class.h" //delegates & protocols 
//.. 
interface VehicleSearchViewController : UITableViewController <PassParsedData> { 
//.. 

然后我这样称呼它

viewcontroller.m // ..这样做的

- (void)sendArray:(NSArray *)array 
{ 
    ICMfgFilterArray = array; 
    [self.tableView reloadData]; 
} 

回答

1

一种方法是代表和协议的推荐的方法。 您的NSObject声明了一个协议。 ViewController实际上实现了该协议并将其自身设置为委托。然后NSObject调用该方法(不知道谁实现了它)。这是在对象之间进行通信的松散耦合方式。

其实我最近在一个基本的介绍,协议和如果你有兴趣的代表写了blog post ...

UPDATE

根据您的更新上面的问题。 不要忘记将您的ViewController设置为委托。

- (void)viewDidLoad { 
     // State that you will take care of messages from graphView (provided you have the  protocol implementation!) 
     self.yourClass.delegate = self; 
    } 

而在你的ViewController的方法应与该协议的签名。因此,在ViewController.m

- (void) sendMyArray:(NSArray *)modelArray { 
    ICMfgFilterArray = array; 
    [self.tableView reloadData]; 
} 
+0

凉..其实我也刚刚开始,现在这样做。我已经viewcontrollers之间在过去使用这一点,但我现在有nsobjectclass和ViewController ..会读之间使用它的一些问题你现在博客..谢谢。 – 2012-03-12 21:48:40

+0

很酷,让我知道你是怎么得到的... – 2012-03-12 22:17:29

+0

好吧..想我非常有它设置atm。但是当我打电话给我的协议时,我已经在我的课程中设置了它,从来没有从视图控制器访问它。我将用我已经完成的所有事情更新我的问题,但是午餐后我会饿死:P真棒,如果你可以检查如何设置协议/代表如何即时通讯。 – 2012-03-12 22:41:24