0

UITableView が detailView を読み込まない理由について質問があります...以前はインターフェイス ビルダーを使用して実行していましたが、今は純粋にプログラムで実行しようとしています。

私のtableView.hで:

@property (strong, nonatomic) RLCASearchDetailViewControllerViewController *searchDetailViewController;

私のtableView.mで:

@synthesize searchDetailViewController = _searchDetailViewController;

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

    if (!self.searchDetailViewController) 
    {

        self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] initWithNibName:@"" bundle:nil];

    }

    SearchItem *item = [ content objectAtIndex:indexPath.row ];

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

    self.searchDetailViewController.detailItem = item;

}

ちなみに、initWithNibName: の値を上記のように nil、空の文字列、さらには @"RLCASearchDetailViewControllerViewController" にしてみました。何も機能しません...

私のRLCASearchDetailViewControllerViewController.hで:

@interface RLCASearchDetailViewControllerViewController : UIViewController
{

    SearchItem *detailItem;

}

@property (strong, nonatomic) id detailItem;

@end

私のRLCASearchDetailViewControllerViewController.mで:

@synthesize detailItem = _detailItem;

- (void)setDetailItem:(SearchItem*)newDetailItem
{
    NSLog( @"GETS HERE" );
    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

        // Update the view.
        [self configureView];
    }
}

- (void)configureView
{
    // Update the user interface for the detail item.

    if (self.detailItem) 
    {

       NSLog( @"GETS HERE" );

    }

}

- (void)loadView
{
    [super loadView];
    // If you create your views manually, you MUST override this method and use it to create your views.
    // If you use Interface Builder to create your views, then you must NOT override this method.

    NSLog( @"DOES NOT GET HERE" );

}

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

    NSLog( @"DOES NOT GET HERE" );
}

上記のように、いくつかのデバッグ プリントを実装すると、理論上は想定どおりに機能しますが、何らかの理由でビューが読み込まれません。これは、ビューがサブビューに変更されるときに、テーブル セルがクリックされたときに何も起こらないことで GUI に現れます。

私は何を間違っていますか?助けてください... それは私を夢中にさせていて、私は答えを期待してしばらくインターウェブを調べていました.

たくさんありがとう - 本当に感謝しています! ;)

敬具、ピョートル。

4

2 に答える 2

0

nib を使用していない場合は、次のコード行を変更します。

self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] initWithNibName:@"" bundle:nil];

self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] init];

それが役に立てば幸い !

于 2012-06-09T07:48:26.193 に答える
0

テーブル ビューはナビゲーション コントローラーに埋め込まれていないため、新しいビュー コントローラーをプッシュできません。

詳細ビュー コントローラーは画面に表示されないため、ビューの読み込みに煩わされることはありません。これが、loadView または viewDidLoad メソッドから何も表示されない理由です。

アプリの初期ビュー コントローラーの設定方法は示していませんが、テーブル ビュー コントローラーをルート ビュー コントローラーとするナビゲーション コントローラーにする必要があります。

初心者の場合、コードですべてを実行しようとするよりも、ストーリーボードを使用する方がはるかに優れています。インターフェイスビルダーを回避することには、いくつかの利点と多くの欠点があります。

于 2012-06-09T08:14:16.817 に答える