2012-03-12 98 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