来自UITableView委托类的父调用选择器

时间:2012-04-08 04:41:01

标签: ios objective-c uitableview cocoa-touch delegates

好的,我已经在这几个小时了,并且认为是时候伸手了。我第一次在一个故事板上处理多个tableviews(2)。我用自己的视图控制器(主视图控制器)设置故事板。我将第一个表委托给主视图控制器作为公共模式。对于第二个表视图,我设置了一个单独的类作为委托,并委托给tableview和datasource。

事情看起来不错,每个tableview加载并显示正确的数据等等。到目前为止一切都很好。

这是第二个tableview上的rub - 外部委托的一个,我想在通过以下方式选择行时执行操作: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath blah ,等等,等等。

所需的操作是启动到连接到“主视图控制器”的新视图控制器的segue。我在主视图控制器中有一个选择器,它具有执行segue动作(否则可以工作)

我无法弄清楚如何建立从委托到主视图控制器的连接,这样我就可以调用正确的选择器,然后启动segue。通常在segues之间我使用segue.parent .. segue.destination ....等等。它们在这种情况下不起作用。我不能脱离委托类,因为segue没有连接到委托。

我尝试过这种方法,但它不起作用: StartViewController:

VisitListDelegate = [[VisitsMainPageDelegate alloc] init];
[self.iboVisitsTableView  setDelegate:self.VisitListDelegate];
[self.iboVisitsTableView  setDataSource:self.VisitListDelegate];

LocalVisits *LV = [[LocalVisits alloc] init]; //datasource
VisitListDelegate.visits = [LV getLocalVisits]; //sets variable in delagate

委托名为VisitsMainPageDelegate的类

#import <UIKit/UIKit.h>
@class StartViewController;

@interface VisitsMainPageDelegate : UIViewController
    <UITableViewDelegate,UITableViewDataSource>  {

StartViewController *sourceParent;

}
@property (nonatomic,retain) StartViewController *sourceParent;
@property (nonatomic,strong) NSMutableArray *visits;
@end

然后尝试像这样引用它:

[sourceParent jumpToVistDetailsForThisVisit:@"test"];

我没有得到错误,但它不起作用。

非常感谢任何帮助解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

实例化委托类时,需要为ViewController提供如下引用:

[[VisitsMainPageDelegate alloc] init];
[self.iboVisitsTableView setDelegate:self.VisitListDelegate]; 
delegate.sourceParent = self;

您已经拥有的前两行 - 这是您需要添加的最后一行。