[英]Passing data between ObjectClass and ViewController
我試圖將一些數據從對象類傳遞回我的視圖控制器。
這是有關類和視圖正在執行的基本概述,然后將向您展示我的代碼。
因此,ViewController加載其tableviewcell。 然后,在此委托方法中,它調用我創建的連接類,在該連接類中,是NSURLConnection方法,該方法連接並從數據庫下載數據,在此連接類的connectionDidFinishLoading方法中,我設置了一個解析類並傳遞所有下載的數據到那。 然后,我解析該數據,並在parserDidEndDocument中該解析器的末尾,嘗試將數組變量中現在存在的數據發送回我的視圖控制器以進行顯示。 但是..由於某種原因,我的協議和代表不起作用。 我已經在m解析器類中設置了協議,並在我的視圖控制器中設置了委托,但是它從未進入我的協議方法。
我將在下面顯示您的代碼。
parserclass.h
@protocol PassParsedData <NSObject>
@required
- (void)sendManufactureArray:(NSArray *)array;
@end
//..
id <PassParsedData> delegate;
//..
@property (strong) id delegate;
//
解析器類
#import "VehicleSearchViewController.h"
//..
@synthesize delegate;
//..
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//.. array stuff is set up and i can log it so i know its working.. i just want to show you the protocol and delegate stuff to be clear
[[self delegate]sendManufactureArray:filteredArray];
}
然后移動到我的視圖控制器,在這里我希望調用該協議並獲取filteredArray數據。
ViewController.h
#import "EngineResponses.h" //delegates & protocols
//..
@interface SearchViewController : UITableViewController <PassParsedData> {
//..
Viewcontroller.h
#import "EngineResponses.h"
//..
- (void)viewDidLoad
{
[super viewDidLoad];
//..
parserClass *pc = [[parserClass alloc] init];
[pc setDelegate:self];
//..
}
- (void)sendManufactureArray:(NSArray *)array //Breakpoint here is never accessed
{
FilterArray = array;
[self.tableView reloadData];
}
正如您在最后一個方法中所看到的那樣,這是我正在調用的協議,線程從未訪問過該方法。 我檢查了,這個電話
[[self delegate]sendManufactureArray:filteredArray];
可以正常訪問..但是它永遠不會回到視圖控制器..任何想法...我錯過了什么嗎? ..我全神貫注,整天都在工作。
任何幫助將不勝感激! :)
更新:
我已經將此添加到我的ViewController.h
//..
ParserClass *parserclass;
//..
@property (strong, nonatomic) ParserClass *parserclass;
//..
視圖控制器
@synthesize parserclass;
//..
//then I call this in viewdidload
[engineResponses setDelegate:self];
正如其他人在評論中說的那樣,您的pc
變量將被重新分配在viewDidLoad
塊的末尾,因為它的唯一引用超出了該范圍。 如果希望它繼續存在,則必須擴大其范圍(即使其成為實例變量)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.