2013-07-17 36 views
3

編輯:如何在TabbarController中設置viewControllers的委託?

我有兩個選項卡tabbarcontroller,第一個標籤我有一個的viewController,第二突片我有navigationViewController與2堆棧的tableView ViewControllers的。

TAB1 ---> VC1

TAB2 ---> NVC - > fistVC1 ----推-----> secondVC2。

我的代碼來推動:

fistVC1.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     if (indexPath.section == 0 & (indexPath.row == 0)) { 

    _secondVC2 = [[secondVC2 alloc] init]; 
    [self.navigationController pushViewController:_secondVC2 animated:YES]; 
    [_secondVC2 release]; 

什麼,我需要做的是設置VC1爲secondVC2的代表,當secondVC2細胞選擇我要發送消息給VC1。

我該怎麼做,請給我一些建議。

我試圖像吹:

secondVC2.h

@protocol secondVC2Delegate <NSObject> 

    - (void)someMethod; 

@end 
#import <UIKit/UIKit.h> 

    @interface secondVC2 :UIViewController<UITableViewDelegate,UITableViewDataSource> 
{ 
    id<secondVC2Delegate>delegate; 
} 

@property (nonatomic ,assign) id<secondVC2Delegate>delegate; 

@end; 

secondVC2.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    NSLog(@"delegate%@",self.delegate); 
    if (indexPath.row == 0) { 
     [self.delegate someMethod]; 
    } 

VC1.h

#import <UIKit/UIKit.h> 
    #import"secondVC2" 
    @interface VC1 :UIViewController<secondVC2Delegate>{ 

    secondVC2 *tvc2; 

    } 
    @property (nonatomic ,retain) secondVC2 *tvc2; 

    - (void)someMethod; 

    @end; 

VC1.m

- (void)viewDidLoad 
    { 
     tvc2 = [secondVC2 alloc] init]; 
     tvc2.delegate = self; 
    } 

但委託人不斷髮布,我得到了第二個VC2中的零委託,我不知道爲什麼。 那麼我怎麼能實現這個?

+0

'@protocol Table VC2 '?你確定嗎? – Kjuly

+0

編輯它。拼寫錯誤。 – Ezimet

+0

您確定VC1.viewDidLoad中的tvc2與Tab2 ---> NVC - > TableVC1 ----> tableVC2中的tvc2是同一個實例嗎? – Bird

回答

4
ViewController1 *viewController1 = [[ViewController1 alloc] init]; 
ViewController2 *viewController2 = [[ViewController2 alloc] init]; 
viewController1.delegate = viewController2; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController2]; 
[self.tabBarController setViewControllers:@[viewController1, navigationController]]; 

你也可以看看NSNotificationCenter

+1

感謝您的回答,幫助了很多。 – Ezimet