2010-11-21 27 views
-1

在以下示例中,當觸摸某個方法的屏幕被調用時,該方法將一個數傳遞給由MyViewController存儲的視圖控制器。唯一的問題是視圖控制器不會存儲這個數字,因爲我想在以後的另一種方法中使用它。請幫忙。謝謝。如何通過方法傳遞和存儲信息

MyViewController.h

@class MyView; 

@interface ViewController : UIViewController { 
    int number; 
} 

-(void)assignNumber(int)sentNumber; 

@property int number; 

MyViewController.m

-(void)loadView { 
    MyView *aView = [[MyView alloc] initWithFrame:wholescreen]; 
    self.view = aView; 
    [aView release]; 
} 

-(id)initWithNibName...... { 
    number = 0; 
} 

-(void)assignNumber:(int)sentNumber { 
    number = sentNumber; 
} 

MyView.h & MyView.m

默認與TouchesBegin,當觸及[viewController assignNumber:5];

+0

你運行什麼檢查來確定5是否被存儲在數字中? – 2010-11-21 05:41:13

回答

1

如果你沒有聲明@synthesize,你將無法訪問viewController內部的數字。嘗試添加

@synthesize number; 

到MyView.m的頂部;這創造了制定者和獲得者。然後,你可以用

[viewController setNumber:5]; 

取代你

[viewController assignNumber:5]; 

通話,並用viewController.number[viewController number]訪問它。

+0

'@ synthesize'僅僅告訴編譯器爲一個屬性實現訪問器。你必須已經在類的'@interface'(在頭文件中)聲明瞭該屬性,並且* *表示將該屬性公開給其他類的對象。相反,只要你在'@interface'中聲明瞭屬性(或者它的訪問器方法),你可以實現訪問器,但是你可以讓編譯器去執行它('@ synthesize')或者自己實現它們;它會與使用該屬性的其他對象沒有區別。 – 2010-11-21 05:21:29

0

您可能希望@合成變量nu在你的ViewController實現中。