1

我在我的應用程序中使用MMDrawerController。當我想將MMExampleLeftSideDrawerViewController中的數據傳遞給MMExampleCenterTableViewController時,我無法做到這一點。在MMDrawerController上傳遞數據

您可以在源代碼中看到MMExampleLeftSideDrawerViewController和MMExampleCenterTableViewController類。 源代碼:link

添加此代碼:

MMExampleCenterTableViewController.h

-(void)doSomethingUseful:(NSString *)data; 

MMExampleCenterTableViewController.m

-(void)doSomethingUseful:(NSString *)data 
{ 
    NSLog(@"dosometing useful %@",data); 
} 

MMExa mpleLeftSideDrawerViewController.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MMExampleCenterTableViewController * mycenterController=(MMExampleCenterTableViewController *)self.mm_drawerController.centerViewController; 

    [mycenterController doSomethingUseful:@"mydata"]; 

    //........... 
} 

當MMExampleLeftSideDrawerViewController我點擊的tableview,我有問題,你可以看到源。

問題日誌: 'NSInvalidArgumentException' 的,理由是:「 - [MMNavigationController doSomethingUseful:]:無法識別的選擇發送到實例

因此,這不是同一個對象的類(MMExampleCenterTableViewController * mycenterController=(MMExampleCenterTableViewController *)self.mm_drawerController.centerViewController;)。

如何將數據發送到MMExampleCenterTableViewController?

+0

@Alok請正確閱讀我的問題。我說我有問題;) –

回答

2

它看起來像self.mm_drawerController.centerViewController是一個導航控制器。你想要的可能是它的topViewController,所以試試這個:

MMExampleCenterTableViewController * mycenterController= [(MMNavigationController *)self.mm_drawerController.centerViewController topViewController]; 
+0

謝謝@rdelmar。他的工作非常好。但你如何理解topviewController?我們可以理解哪種情況? –

+1

@ErhanDemirci,我不知道我理解你的問題。 topViewController是UINavigationController的一個屬性,並返回堆棧頂部的控制器。如果堆棧中只有一個控制器,它將成爲導航控制器的根視圖控制器。 – rdelmar

+0

真的很感謝:)好老師 –