2012-04-08 80 views
0

好吧,我已經在這上了幾個小時了,並且認爲是時候聯繫了。我第一次在一個故事板上使用多個tableviews(2)。我用自己的視圖控制器(主視圖控制器)設置故事板。我將第一個表格委託給主視圖控制器作爲常用模式。對於第二個表格視圖,我將一個單獨的類設置爲委託並委託給tableview和數據源。來自UITableView委託類的父級調用選擇器

事情看起來不錯,每個tableview加載並顯示正確的數據等等。我想在通過以下方式選擇行時採取行動: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath等等等等等等。

所需的操作是啓動連接到「主視圖控制器」的新視圖控制器的繼續。我有一個在主視圖控制器中執行segue操作(否則工作)

選擇器我無法弄清楚如何建立一個連接從代理到主視圖控制器,所以我可以調用正確的選擇器然後將啓動賽格。通常在segues之間使用segue.parent .. segue.destination ....等等,它們在這種情況下不起作用。由於segue沒有連接到委託,因此我無法繼承委託類。

我試過這種方法,但它不工作: StartViewController:

稱爲VisitsMainPageDelegate
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 

Delegate類

#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"]; 

我沒有得到錯誤,但它不起作用。

任何幫助解決這個問題將不勝感激。

謝謝!

+0

你給sourceParent賦了一個值嗎?即在ViewController中'delegate.sourceParent = self;'。 – 2012-04-08 06:56:21

+0

不確定你的意思。我有一個主視圖控制器和2個tableviews。然後我創建了一個名爲VisitsMainPageDelegate的類,並在主視圖控制器中引用它,如下所示: VisitListDelegate = [[VisitsMainPageDelegate alloc] init]; [self.iboVisitsTableView setDelegate:self.VisitListDelegate]; [self.iboVisitsTableView setDataSource:self.VisitListDelegate]; LocalVisits * LV = [[LocalVisits alloc] init]; // datasource VisitListDelegate.visits = [LV getLocalVisits]; 我不知道如何從委託類返回到視圖控制器的引用。 – CocoaEv 2012-04-08 07:11:57

回答

0

當你實例化委託類,你需要給它到ViewController參考如下:

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

前兩個你已經有行 - 這是你需要添加的最後一行。