2012-11-29 201 views
0

我想將標籤的文本設置爲來自不同類的單元格的文本。如何在類之間共享方法

在我MasterViewController我:

// SAVE TEXT OF SELECTED CELL 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    cellString = cell.textLabel.text; 
} 

//SHARES VARIABLES BETWEEN CLASSES 

- (ChemProjectMasterViewController*) sharedVariable 
{ 
    static ChemProjectMasterViewController *myVariable = nil; 

    if (myVariable == nil) 
    { 
     myVariable = [[[self class] alloc] init]; 
     myVariable.sharedCellString = cellString; 
    } 

    return myVariable; 
} 

我也有這個在.H

@interface ChemProjectMasterViewController : UITableViewController 

@property (nonatomic)NSString *cellString; 
@property (nonatomic)NSString *sharedCellString; 
+(ChemProjectMasterViewController*) sharedVariable; 

@end 

現在我想從訪問該方法的類是DetailViewController。在這我有:

detailDescriptionLabel.text = [ChemProjectMasterViewController sharedVariable].sharedCellString; 

其中detailDescriptionLabel只是一個文本標籤。

** 該程序編譯正常,但我有標籤文本設置爲單擊按鈕時更改。該應用程序運行平穩,直到我點擊導致它崩潰的按鈕。主要目標是將DetailViewController中的標籤文本設置爲MasterViewController中單元格的文本。感謝您的任何幫助!

+1

冒着太明顯的風險,'detailDescriptionLabel.text'需要一個字符串。您正在傳入視圖控制器。爲什麼? –

+0

@StevenFisher - 他實際上是在傳遞一個字符串。他從類「ChemProjectMasterViewController」中訪問名爲'sharedVariable'的變量sharedCellString。 – pasawaya

+0

@ jtetreault13你在頭文件中聲明爲'+(ChemProjectMasterViewController *)sharedVariable;'和.m文件,你將它定義爲' - (ChemProjectMasterViewController *)sharedVariable',我不確定,但是這會產生問題。 – viral

回答

0

我看到很少的東西。

第一個,在.h中聲明爲類方法(+),而在.m中聲明爲實例( - )。

第二個是@property (nonatomic)NSString *sharedCellString;這是不安全的不留,使其強大。

請讓我知道,如果它工作?

+0

以及我做了sharedCellString強壯,它似乎沒有做任何事情,仍然得到了相同的SIGABRT。現在,當我進入.h並將其從類方法(+)更改爲實例( - )時,它會拋出一個錯誤,指出在'id'類型的對象上找不到'Property'sharedCellString'「 – jtetreault13