2012-09-21 135 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