まず第一に、これが何らかの形で重複投稿である場合は、何時間も検索しても見つからないため、お気軽に正しい投稿を教えてください。
アプリで MasterDetail viewController を使用していますが、開発の最初の 1 週間ほどの間、デフォルト以外の追加の ViewVontrollers やセグエはありませんでした。メインコードを書きましたが、Master と Detail の viewController は完璧に動作しています。詳細ビューからプッシュ セグエを使用して別の VC を追加するとすぐに、アプリが即座にクラッシュします。これはエラーです:
***Terminating app due to uncaught exception 'NSInvalidArgumentException', reason '-[UINavigationController setPlayer:]: unrecognized selector sent to instance ...'
そして、ヘックスの束。
AppDelegate.m で、次の行をコメントアウトすると:
rightViewController.delegate = rightViewController
その後、アプリが起動し、プッシュ セグエが機能しますが、明らかに、MasterView でセルを選択すると、次のエラーが発生してクラッシュします。
***Terminating app due to uncaught exception 'NSInvalidArgumentException', reason '-[UINavigationController selectedPlayer:]: unrecognized selector sent to instance ...'
そして、ヘックスの束。
関連すると思われるすべてのコードを次に示します。
AppDelegate.m
#import "AppDelegate.h"
#import "LeftViewController.h"
#import "RightViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *leftNavController = [splitViewController.viewControllers objectAtIndex:0];
LeftViewController *leftViewController = (LeftViewController *)[leftNavController topViewController];
RightViewController *rightViewController = [splitViewController.viewControllers objectAtIndex:1];
Player *selectedPlayer = [[leftViewController preclears]objectAtIndex:0];
[rightViewController setPlayer:selectedPlayer];
leftViewController.delegate = rightViewController;
return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
LeftViewController.m (一部)
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
//Re-fetch the feed from the Postgres Database when a user selects an entry
[JSONHTTPClient getJSONFromURLWithString:@"http://myurl" completion:^(NSDictionary *json, JSONModelError *err) {
NSError* error = nil;
_feed = [[PostgresFeed alloc] initWithDictionary:json error:&error];
//Print the data fethced to NSLog in JSON format
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification" object:nil userInfo:[[json objectForKey:@"player"] objectAtIndex:indexPath.row]];
}];
Player *selectedPlayer = [_players objectAtIndex:indexPath.row];
if (_delegate)
{
[_delegate selectedPlayer:selectedPlayer];
}
}
だから、私は何か間違ったことをしていますが、それが何であるかわかりません。私は多くのグーグルを行ってきましたが、まだ答えを見つけていません。誰かが知りたい場合に備えて、私は iOS と Obj C の初心者であり、MasterDetail アプリは iPad SplitViews の Ray Wenderlich チュートリアルに基づいています。また、セグエに関する Scott Sherwood チュートリアルのいくつかをチェックアウトしましたが、そこには何の答えも見つかりませんでした。
さらにコードが必要な場合はお知らせください。