2013-09-16 133 views
0

我很難在UISplitViewController內的兩個視圖控制器之間通信數據。我正在關注this教程。我能夠在主視圖和詳細視圖上使用UITableView創建分割視圖控制器。現在,我真正想要的是,當我點擊主表中的特定行時,它必須向詳細視圖發送一些值。UISplitViewController中兩個視圖控制器之間的通信

我只是玩弄一個自定義委託來傳遞一個值從一個視圖控制器到另一個看看他們之間是否有任何溝通,但似乎沒有任何工作方式。

在MasterTableView.h

@protocol sendingProtocol <NSObject> 

-(void)passSomeValue:(NSString *)someValue; 

@end 



@interface MasterTableView : UITableViewController 
{ 
    NSArray *menuArray; 
    id<sendingProtocol>delegate; 
} 

@property (nonatomic,assign) id<sendingProtocol>mydelegate; 

@end 

合成的.m文件。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [[self mydelegate] passSomeValue:@"Some Value"]; 
} 

在DetailTableView.h

-(void)passSomeValue:(NSString *)someValue 
{ 
    NSLog(@"%@", someValue); 
} 

請注意,我打電話viewDidLoad方法裏面mydelegate。這是寫方式嗎?有人可以幫忙嗎?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    MasterTableView *masterView = [[MasterTableView alloc] init]; 
    masterView.mydelegate = self; 
} 

預先感謝您!

+0

http://stackoverflow.com/questions/8031238/uisplitviewcontroller-master-detail-communication –

+0

@Puneet的可能重複我已經通過了的問題之前,我張貼這一個。 Ray Wanderlich的教程使用Storyboard,但我只是使用Xib。互聯網上的很多教程都使用故事板。感謝您的幫助。 – GenieWanted

+0

查看[這個答案!(http://stackoverflow.com/questions/33721081/swift-how-to-detect-if-uisplitviewcontroller-is-currently-showing-1-or-2-contro/38547858#38547858 )它可能會給你一些見解。 –

回答

1

viewDidLoad方法你的DetailTableView你不應該創建一個新的MasterTableView對象。該錯誤是在這裏這個方法: - (無效)viewDidLoad中

{ 
    [super viewDidLoad]; 
    MasterTableView *masterView = [[MasterTableView alloc] init]; 
    masterView.mydelegate = self; 
} 

您正在創建的MasterTableView另一個對象及其委託設置自,因此所有的問題。

要將代表MasterTableView設置爲DetailTableView,請轉至AppDelegate.h。您必須在AppDelegate中定義了MasterTableViewDetailTableView對象。

//Set the DetailTableView as the master's delegate. 
self.masterTableView.delegate = self.detailTabelView; 
+0

我已經完成了你的建議。仍然沒有運氣! (我有我的自定義委託在我的其他控制器上工作。這似乎不工作只在UISplitview。是否有任何相關性?在ViewDidLoad中設置代理是否好?因爲這兩個主控和詳細視圖控制器似乎負載在UISplitView同一時間。這有什麼影響?謝謝。 – GenieWanted

+0

見我的編輯,我希望這個作品。 –

+0

我沒能做出委託的工作,而是我用通知中心把事情做好。現在,所有好的,我非常感謝你的幫助+1非常感謝你! – GenieWanted

相關問題