1

iPad マスター/詳細プロジェクト テンプレートを使用しており、アプリを最初に実行UILabelsしたときに一部を更新しようとしています。detailViewController

これが私のコードです:

 (void)setObject:(id)newObject
{
    if (_object != newObject) {
        [_object release];
        _object = [newObject retain];

        [self configureView];
    }

    if (self.masterPopoverController != nil) {
        [self.masterPopoverController dismissPopoverAnimated:YES];
    }
}

- (void)configureView
{
    [self updateDetails];
}

- (void) updateDetails
{
    NSLog(@"Details = %@", self.details);
    NSLog (@"detailLabel %@", self.detailLabel);
    self.detailLabel.text = [self.details objectForKey:@"aKey"];
}
- (IBAction)refresh:(UIBarButtonItem *)sender {
    [self updateDetails];
}

setEventマスター ビュー コントローラーのviewDidLoadメソッドから、テーブルビューの 1 行目をデフォルトとして選択して呼び出されます。

if (![self.tableView indexPathForSelectedRow])
{
    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];
    [self.detailViewController setObject:[self.sortedObjects objectAtIndex:0]];
}

コードを実行するdetailLabelと、変更されず、(null)NSLogと表示されます。self.detailLabel後でボタン クリックから 'refresh' が呼び出された場合、detailLabelnull ではなく、正しく更新されます。detailLabelが作成され、(null) でないことを確認するにはどうすればよいですか?

4

1 に答える 1

0

IBOutlet オブジェクトは、そのオブジェクト (マスター ビューではなく詳細ビュー) の viewDidLoad() の時点で作成されます。

[self updateDetails];この問題を回避するには、詳細ビュー コントローラの in viewdidLoad() メソッドを呼び出します。

于 2013-03-12T05:02:23.740 に答える