2011-06-30 33 views
0

我聲明一個int值作爲我的imageIndexForSend通過myView類中的以下代碼。不能訪問一個int值

int imageIndexForSend; 
@property int imageIndexForSend; 
@synthesize imageIndexForSend; 

在點擊一個按鈕後,我顯示一個PopOver calss的彈出窗口。 有一個在酥料餅class.when多個索引表視圖我酥料餅類表中點擊任何行它myViewClass

-(void)getImageForSend:(int)index{ 
    imageIndexForSend = index; 
} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    myView *obj = [[myView alloc] init]; 
    [obj getImageForSend:indexPath.row]; 
    [staticSceneController release]; 
} 

設置MyView的類imageIndexForSend作爲

在酥料餅

然後我解散popover(popOver類)並在myViewClass中執行一些操作後返回myViewClass。

然後我點擊發送button.but整數值imageIndexForSend是zero.cant獲取我設置從PopUp的舊值。

任何人都可以告訴我一個方法來獲取舊imageIndexForSend value.may我知道我做了什麼錯誤。

回答

1

首先,你用get命名一個方法來設置值,這很糟糕。

其次,您使用一個屬性並將其合成,因此除非需要自定義設置方法,否則不需要重寫set方法。

最後你在每個tableview單元格的選擇上創建一個新的視圖!

1)刪除您getImageForSend:方法,你並不需要與財產

2)而不是使用:[OBJ getImageForSend:indexPath.row] ;,使用:obj.imageIndexForSend = indexPath.row;

3)不要在每個選擇上創建一個新視圖,在現有視圖上分配值。

將數據從彈出窗口傳輸到視圖(控制器?)的更好方法是在彈出窗口類中有一個委託屬性,並將其與您的視圖對象一起設置,創建一個委託協議,單元格在彈出式窗口中選擇一個int參數(索引),然後讓你的視圖類採用協議,並做一個obj.imageIndexForSend = 參數;在你的協議方法。

1

當用戶點擊你的UITableView的任何一行時,你正在實例化一個新的MyView。您應該嘗試訪問原始MyView(或任何對象應保留該設置值)。

在你的彈出窗口中,你應該找到一種方法來訪問包含實際索引值的實例。如何實現這一點取決於您的實施。

換句話說,不要在生命期短於訪問該實例的對象的對象中實例化某個對象。

0

如果你想訪問選定行的索引中的UITableView你可以使用以下命令:

int index = [myTableView indexPathForSelectedRow].row; 
1

看來你分配myView實例,將其賦值給一個局部變量(obj),但是你不會在任何地方保留一個指向新實例的指針。

據我所知,你已經有了一個現有的myView實例,所以你需要做的是在該實例上設置變量,而不是每次都創建一個新實例。

每個實例都有自己的一組變量,因此在新實例中更改它不會影響任何其他實例。