2014-01-10 44 views
-2

我有一個Viewcontroller命名爲:Selectvideo。這有一個名爲selectvideo1的子類。我怎樣才能將一個int從子類傳遞給viewcontroller?我試過了,但每次嘗試時它只會返回0。在子類中它返回0.變量形式子類到視圖控制器

我想從selectvideo1中通過selectedCellValue來選擇視頻。通過使用這樣的:

selectvideo1.h

@interface SelectVideo1 : SelectVideo <UIActionSheetDelegate> 


- (id)initWith:(NSString *)Selected; 
    @property int selectedCellValue; 

@end 

selectvideo1.m

-(void)didComplete:(NSDictionary *)response 

{ 


    SelectVideo *selectVideo = [[SelectVideo alloc] init]; 

    selectVideo.selectedRowValue = selectedCellValue; 
} 

selectvideo.h

@interface SelectVideo : UITableViewController<NSFetchedResultsControllerDelegate> 

    @property (nonatomic, retain) NSMutableArray *items; 
    -(IBAction)songsDone:(id)sender; 

    @property int selectedRowValue; 

@end 

selectvideo.m

- (void)viewDidLoad 

{ 



    [super viewDidLoad]; 
    NSLog(@"%d", selectedRowValue); 




} 
+1

這似乎是在你以前的問題http://stackoverflow.com/questions/21028965/send-integer-from-document-to-document相同的問題。你知道那裏給出的答案嗎? –

+0

沒有,因爲我遺傳類被誤解了。 – user3140296

回答

0

你很困惑。你有2個獨立的對象,所以SelectVideo1類是SelectVideo的一個子類並不真正相關。

我的敞篷車是轎車的一個子類的事實並不意味着敞篷車的一個實例可以發送信息到轎車的另一個​​實例,該實例不是通過類方法轉換的。這兩個對象需要使用屬性獲取器/設置器或實例方法相互通信。

您發佈的代碼應該有效 - 有點。在didComplete方法中,創建SelectVideo類的新實例,並將該SelectVideo對象的selectedRowValue類設置爲selectedCellValue。

但是,您如何處理SelectVideo這個新實例?在您發佈的代碼中,您將其創建爲局部變量,將其設置爲selectedRowValue屬性,然後將其丟棄。當didComplete方法結束時,您創建的新SelectVideo對象將超出範圍,ARC將釋放它。

這就像創造一個新的轎車對象,設置它的廣播電臺,然後推動新轎車從懸崖上沒有駕駛它。

在我看來,你對於什麼對象是什麼以及它分配一個對象意味着什麼有一些基本的誤解。

你要把這些信息發送到哪裏?你能畫出你的對象,並解釋你想傳遞的信息嗎?

+0

我已將indexpath.row從視圖控制器保存到對象「selectedCellValue」(在selectvideo1中)。在此之後,我想將此值傳遞給selectvideo viewcontroller。 我想你的錯誤理解。 – user3140296

0

你誤解了你的「子類」。由於您的SelectVideo1SelectVideo的繼承類,它繼承了父類的變量和屬性。父類不知道任何子類或它們的變量。如果你想要你的超類有一個變量的知識,你需要在那裏定義它,而不是在子類中。

parentClass 
{ 
    //variables and properties (example selectedRow) 
} 

childClass : parentClass (inherits all of the parentClass's variables, properties, functions, etc. 
{ 
    //new variables and properties that the parentClass doesn't want to see 
    //use any of parentClass's variables in this class's implementation. 
} 

那麼你只能在childClass的一個實例,使用這兩個類的屬性和父類的變量,childClass的變量。

長話短說。如果要在parentClass中使用它們,請在parentClass中定義變量。 childClass會繼承它們並能夠使用它們。

+0

好吧,但我怎麼能通過一個變量從遺傳類到selectvideo? – user3140296

+0

您不會將變量傳遞給超類。你有一個對象的實例。您可以將該對象稱爲自己的類,或者它是超類。在任何情況下,超類的變量都可以被使用,讀取,寫入等。我認爲遺傳不是你想要在這裏實現的。 – Putz1103

+0

普茨,OP正在創建一個超類的新實例。它並不重要,它是一個祖先的對象。這是一個不同的例子。 –

0

父類(SuperClass)無法訪問子類屬性,但子類可以訪問/繼承父類(SuperClass)的所有屬性。如果你想要做一個共享管理器並保存你的屬性並訪問它。

相關問題