Ich habe eine Universal-App mit UISplitViewConroller. Ich verwende Storyboards.Delegierter nicht in iOS5 gesetzt 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;
}
Ich habe einen linken und rechten Controller für UISplitViewController App.
LeftViewController verfügt über einen benutzerdefinierten Delegaten, der als RightViewController festgelegt ist.
//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 implementiert dieses Delegate-Protokoll. Wenn jedoch in LeftViewController auf die Zelle innerhalb der Zeile geklickt wird, schlagen die Delegierten fehl.
//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];
}
}
// Get Fehler CustomViewTab [1200: 11303] * Beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '- [UINavigationController matchSelectionChanged:]: Unbekannter Selektor an Instanz gesendet 0xda6a770' * erster Wurf Call-Stack: (0x1559052 0x1da8d0a 0x155aced 0x14bff00 0x14bfce2 0x1204e 0x62071d 0x620952 0x25986d 0x152d966 0x152d407 0x14907c0 0x148fdb4 0x148fccb 0x2500879 0x250093e 0x590a9b 0x1df8 0x1d55) terminate genannt, eine Ausnahme zu werfen
ich didSel sehen ectRowAtIndex aufgerufen aber dann RightViewController MatchSelectionChanged: (NSString *) curSelection wird nie aufgerufen.