2012-04-09 3 views
1

私はUISplitViewConrollerでUniversalアプリを持っています。私はストーリーボードを使用しています。iOS5 StoryBoardに代理人が設定されていませんUISplitViewController

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
{ 
     UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
     UINavigationController *masterNavigationController = [splitViewController.viewControllers objectAtIndex:0]; 
     LeftViewContrller *lcontroller = (LeftViewContrller *)masterNavigationController.topViewController; 
     id<SplitViewDelegate> rightController = (id<SplitViewDelegate>)[splitViewController.viewControllers objectAtIndex:1]; 
     lcontroller.delegate = rightController; 
} 

私はUISplitViewControllerアプリケーション用の左右のコントローラーを持っています。

LeftViewControllerには、RightViewControllerとして設定されたカスタムデリゲートがあります。

//Custom delegate 

@protocol SplitViewDelegate <NSObject> 

- (void) matchSelectionChanged:(NSString *)curSelection; 

@end 

//LeftViewContoller 

@interface LeftViewContrller : UITableViewController { 
    id<SplitViewDelegate> _delegate; 
    NSMutableArray *_matches; 
} 
@property (strong) id<SplitViewDelegate> delegate; 
@property (strong) NSMutableArray *matches; 

@end 

RightViewControllerは、この委任プロトコルを実装しています。しかし、LeftViewControllerでセルの内側の行をクリックすると、デリゲートは失敗します。

//RightViewController 
@interface RightViewController : UIViewController <SplitViewDelegate> 

@property (weak,nonatomic) IBOutlet UILabel *matchLabel; 

@end 

//Implementation of RightViewController 
- (void) matchSelectionChanged:(NSString *)curSelection { 
    self.matchLabel.text = curSelection; 
    //[self refresh]; 
} 

//Did select row in LeftViewController 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableString *s = [[NSMutableString alloc] initWithString:@"Row selected"]; 
    if (_delegate != nil) { 
     [s appendFormat:@" %d ", indexPath.row]; 
     [_delegate matchSelectionChanged:s]; 
    } 
} 

//エラー はCustomViewTab [1200:11303]取得* 'NSInvalidArgumentException'、理由によりキャッチされない例外にアプリを終了: - * を '[UINavigationController matchSelectionChanged::]認識されていないセレクタは、インスタンス0xda6a770に送られました'まずスローコールスタック: (0x1559052 0x1da8d0a 0x155aced 0x14bff00 0x14bfce2 0x1204e 0x62071d 0x620952 0x25986d 0x152d966 0x152d407 0x14907c0 0x148fdb4 0x148fccb 0x2500879 0x250093e 0x590a9b 0x1df8 0x1d55) は、私がdidSelを参照してください例外

を投げると呼ばTERMINATE ectRowAtIndexが呼び出されたがRightViewControllerのmatchSelectionChanged:(NSString *)curSelectionが呼び出されない。

答えて

0

古い質問のビットですが、私はそれを見つけましたが、一目で正しい代理人がいますか?

私はので、多分そのiOS5を

以降に変更iOS7で探しています
@interface RightViewController : UIViewController <UISplitViewControllerDelegate> 

関連する問題