タブ バー アプリケーションを作成し、デフォルトの FirstView と SecondView を削除し、次の 2 つの ViewController を追加しました。
- JustAnotherView (これは、内部に UIView を持つ単なる UIViewController です)
- MyListOfItems (これは、内部に TableView を持つ UIViewController です)
ユーザーが TableView セルの 1 つに触れたときに呼び出されることになっている UIView を内部に持つ ListOfItemsDetailViewController と呼ばれる 3 番目の ViewController があります。
アプリケーションは問題なくコンパイルされます。両方のタブ バー ボタンをタッチすると、正しいビューが表示されます。
問題: TableView セルをクリックすると、詳細ビューに切り替えるコードが (クラッシュやエラーなしで) 実行されますが、ビューは表示されません。
これは、クラッシュすることなく pushViewController を通過したことを示す NSLog を含むアプリケーションとデバッガーのスクリーンショットです。
http://clip2net.com/clip/m52549/thumb640/1281588813-9c0ba-161kb.jpg
これがコードです。
MyListOfItemsViewController.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "ListOfItemsDetailViewController.h";
@interface MyListOfItemsViewController : UIViewController {
ListOfItemsDetailViewController *listOfItemsDetailViewController;
}
@property (nonatomic, retain) ListOfItemsDetailViewController *listOfItemsDetailViewController;
@end
MyListOfItemsViewController.m ファイルは次のとおりです。
#import "MyListOfItemsViewController.h"
@implementation MyListOfItemsViewController
@synthesize listOfItemsDetailViewController;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.title = @"My List Of Items";
NSLog(@"My List Of Items Did Load");
}
#pragma mark -
#pragma mark Table view data source
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSString *cellMessage;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cellMessage = [NSString stringWithFormat:@"indexPath: %d",indexPath.row];
cell.textLabel.text = cellMessage;
return cell;
}
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ListOfItemsDetailViewController *vcListOfItemsDetail = [[ListOfItemsDetailViewController alloc]
initWithNibName:@"ListOfItemsDetail" bundle:[NSBundle mainBundle]];
self.listOfItemsDetailViewController = vcListOfItemsDetail;
[vcListOfItemsDetail release];
[self.navigationController pushViewController:self.listOfItemsDetailViewController animated:YES];
NSLog(@"Did Execute didSelectRowAtIndexPath WITHOUT Crashing or Error.");
}
#pragma mark -
#pragma mark Memory management
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
// For example: self.myOutlet = nil;
NSLog(@"My List Of Items View Did Unload");
}
- (void)dealloc {
[super dealloc];
}
@end
助けてください。それは非常に高く評価されます!!!
基本的なナビゲーションを iOS プラットフォームに取り込もうとして、私は頭がおかしくなりました。
また、素人の質問で申し訳ありませんが、ほとんどの人はすでにこれを行う方法を理解していると思います。
前もって感謝します。ヤオスン