これに似た問題が発生しています...黒い画面が表示されるのはなぜですか? 私は何かを割り当てませんでしたか?
初心者の質問で申し訳ありませんが、これをデバッグする方法がわかりません。ビュー コントローラの 1 つに空白の (黒い) 画面が表示されます。インスペクターでView Controllerを「is initial View Controller」に設定すると、期待どおりに動作します。ただし、それを削除すると (最初の VC ではなく、デバッグのためにそれを実行しただけです)、ビューに移動すると、空白の (黒い) 画面が表示されます。
VC (referenceDetailWebView) に webview があり、VC の viewDidLoad でそれをログアウトしようとすると、(null) が表示されます。繰り返しますが、VC を「初期」に設定すると、期待どおりに referenceDetailWebView オブジェクトがログアウトされます。
これはVCの実装です...
@implementation DetailViewController
@synthesize currentReference, referenceDetailWebView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"reference/accommodation" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[referenceDetailWebView loadHTMLString:htmlString baseURL:nil];
// log for debugging
NSLog(@"%@", [self referenceDetailWebView]);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
私が考えることができる唯一のことは、私のセグエで何かが欠けているかもしれないということです. 私はそれらをプログラムで処理していますが、そこに何かを見落としている可能性が非常に高いです...? 私の didSelectRowAtIndexPath は次のようになります...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Reference *currentItem = [references objectAtIndex:indexPath.row];
NSString *mySegueID;
if([currentItem hasSubReferences]){
mySegueID = @"ShowSubTable";
} else {
mySegueID = @"ShowDetail";
}
[self performSegueWithIdentifier:mySegueID sender:nil];
}
そして、私の performSegueWithIdentifier は次のようになります...
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender{
// the segue with identifier allows us to chose a segue programatically
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
Reference *item = [references objectAtIndex:path.row];
if([identifier isEqualToString:@"ShowSubTable"]){
// looking for sub table
ReferencesSubTableViewController *subTableVC = [[ReferencesSubTableViewController alloc] initWithNibName:nil bundle:nil];
[subTableVC setCurrentReference:item];
[self.navigationController pushViewController:subTableVC animated:YES];
} else if ([identifier isEqualToString:@"ShowDetail"]){
// looking for detail view
DetailViewController *detailVC = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
[detailVC setCurrentReference:item];
[self.navigationController pushViewController:detailVC animated:YES];
}
}
セグエは、detailViewController が空白の画面を表示し、referenceDetailWebView に null を与えることを除いて、期待どおりに機能しています。
私は立ち往生しています。アドバイスやガイダンスは大歓迎です!事前に助けてくれてありがとう!!
編集: おそらくセグエが原因のようです。複数のセグエと関連コードを削除し、テーブル セルから DetailViewController のみに単純なセグエを追加すると、detailVC とビューが正しく読み込まれます。セグエで何が欠けているのかわからない...?
performSegueWithIdentifier を次のように単純化しましたが、まだ空白の画面が表示されます...
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender{
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
Reference *item = [references objectAtIndex:path.row];
DetailViewController *detailVC = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
[detailVC setCurrentReference:item];
[detailVC setTitle:[item title]];
[self.navigationController pushViewController:detailVC animated:YES];
}