1

テーブルビューコントローラをセットアップし、サブビューを接続しました。そのため、新しいサブビューが表示されます。私はいくつかのチュートリアルをステップバイステップで実行しましたが、何らかの理由で行をクリックすると何も表示されません(行は選択されています)。テーブルビューコントローラからビューコントローラを押しても動作しません

@interface TableViewsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { 

IBOutlet UITableView *tblSimpleTable; 
IBOutlet UINavigationBar *navBar; 
NSArray *arryData; 
NSMutableArray *listOfItems; 
} 

@property (nonatomic, retain) IBOutlet UITableView *tblSimpleTable; 
@property (nonatomic, retain) IBOutlet UINavigationBar *navBar; 
@property (nonatomic, retain) NSArray *arryData; 
@property (nonatomic, retain) NSMutableArray *listOfItems; 

.M(関連部分)

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; 
} 

NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section]; 
NSArray *array = [dictionary objectForKey:@"Computers"]; 
NSString *cellValue = [array objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 

return cell; 

} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath 
{ 

NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section]; 
NSArray *array = [dictionary objectForKey:@"Computers"]; 
NSString *selectedCountry = [array objectAtIndex:indexPath.row]; 

//Initialize the detail view controller and display it. 
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]]; 
dvController.selectedComputer = selectedCountry; 
[self.navigationController pushViewController:dvController animated:YES]; 
dvController = nil; 

} 

そして、サブビューコントローラ:

の.h

@interface DetailViewController : UIViewController { 

IBOutlet UILabel *lblText; 
NSString *selectedComputer; 


} 

@property (nonatomic, retain) IBOutlet UILabel *lblText; 
@property (nonatomic, retain) NSString *selectedComputer; 

@end 

はここに私のメインのビューコントローラです。 m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 

//Display the selected country. 
lblText.text = selectedComputer; 

//Set the title of the navigation bar 
self.navigationItem.title = @"Selected Computer"; 

} 

私はすべてがうまくIBに接続されていることを確信しています。

ありがとうございました!

+0

行を選択する前にnavigationBarがtableViewの上に表示されますか?コードが正しいように見えるので、接続を2回確認し、navigationControllerが正しく設定されていることを確認します。 – PengOne

+0

'dvController'を記録し、それが' nil'であるかどうかを確認します。 –

+0

dvControllerはnilではありません – TommyG

答えて

2

ナビゲーションコントローラ内のテーブルビューです。あなたは

[self.navigationController pushViewController:dvController animated:YES]; 

にブレークポイントを置き、self.navigationController財産で戦利品を取ることができます。もしそれが無ければ、あなたはそれに何かを押すことができませんが、ほとんどの場合、単にnilにメッセージを送ることは単にnilを返すので、エラーは発生しません。

+0

はい、それはnilです....私はそれを全く定義していないことに気づきました。私は文字通りチュートリアルから言葉でそれを取った。 – TommyG

+0

多くの時間は、ほとんどのことをあなたを台無しにする小さなもの。 :) –

+0

AppDelegateでこれらの定義のいくつかを多くの場所で作成しています。それは大丈夫ですか?私はまだ初心者ですが、私はこの物体に決して触れようとしません....ありがとう! – TommyG

1

小さなオーバールックになる場合があります。テンプレートからDetailedViewControllerを作成し、それに対してnibファイルを作成するようにチェックした場合、nibファイルは.hと.mファイルと同じ名前になります。だからあなたのペン先クラスの名前を確認してください。可能性があります:

DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 

P.S.ここにself.を使用してください:

self.dvController = nil; 

そうしないと、リークします。

+0

面白いですが、initWithNibNameは実際に別の名前に設定されていました(私が言ったように、チュートリアルからこれをコピーしましたが、ファイル名を変更しました)。 – TommyG

+0

また、再漏れ - まだARCでこれが必要ですか? – TommyG

関連する問題