2012-09-21 133 views
0

我有一個具有一個操作來呈現視圖cotroller使用委託返回不工作

GoodNewsBodyViewController.h

@interface GoodNewsBodyViewController : UIViewController<EventListDelegate> 

GoodNewsBodyViewController.m

-(IBAction)goToEvents:(id)sender { 
       EventTableViewController* eventsController = [[EventTableViewController alloc] initWithNibName:@"EventTableViewController" bundle:nil]; 

     [eventsController setListOfEvents:goodNews.Events]; 
     //try both ways 
     [eventsController setDelegate:self]; 
     eventsController.delegate = self; 

     [self presentModalViewController:eventsController animated:YES]; 
    } 
    - (void)loginFormDidFinish:(EventTableViewController*)loginForm { 
     // do whatever, then 
     // hide the modal view 


     EventViewController *eventController = [[EventViewController alloc] initWithNibName:@"EventViewController" bundle:nil]; 
     [eventController setEvent:loginForm.event]; 
     [self.navigationController pushViewController:eventController animated:YES]; 
     // clean up 
     [self dismissModalViewControllerAnimated:YES]; 
    } 

視圖控制器的對象EventTableViewController.h

當在eventstableviewcontroller中選擇一個事件時,我希望將該事件回傳。我試圖通過將事件作爲一個屬性設置在eventstableviewcontroller的didselect方法中來實現它。事件列表正在呈現,當事件被選中時,該列表消失。這是所有正確的,但 - - (void)loginFormDidFinish:(EventTableViewController *)loginForm;

事件似乎並不火,我已經設置了斷點,但他們從來沒有被打......任何幫助表示讚賞!

+0

委託回調是不是真正的 「事件」。你已經展示了你的'loginFormDidFinish:'的實現,但是實際調用它的代碼在哪裏? – aroth

+0

它在EventTableViewController.h中,閱讀客觀的c文檔這是如何聲明代表 – user987723

+0

是的,你*在頭文件中正確聲明瞭它。但宣稱這只是戰鬥的一半。您仍然必須從實際實施的某處調用委託方法。 – aroth

回答

0

loginFormDidFinish:方法應該是這樣的

-

(void)loginFormDidFinish:(EventTableViewController*)loginForm { 
     // hide the modal view 
     [self dismissModalViewControllerAnimated:NO];//without animation 


     EventViewController *eventController = [[EventViewController alloc] initWithNibName:@"EventViewController" bundle:nil]; 
     [eventController setEvent:loginForm.event]; 
     [self.navigationController pushViewController:eventController animated:YES]; 
     [eventController release]; 
     // clean up 
} 
+0

不行,方法仍然沒有被擊中。我正在使用弧,所以沒有'釋放' – user987723