0

私はまだ iOS 開発を始めたばかりですが、解決できない問題に遭遇し、オンラインで調べてみましたが、まだ何も見つかりません。

UIImagePickerController を使用して画像を選択し、App Delegate で使用しています。画像が返ってきたら、imagePickerController:didFinishPickingMediaWithInfoメソッドで、View Controllerで新しいNavigation Controllerを作って「app」の上に乗せたい。

これが私がやっている方法です:

CustomNavigationController *customNavigationController = [[CustomNavigationController alloc] init];
PhotoViewController *photoViewController = [[PhotoViewController alloc] initWithNibName:@"PhotoViewController" bundle:[NSBundle mainBundle]];

[customNavigationController pushViewController:photoViewController animated:NO];
[customNavigationController.view setFrame:[[UIScreen mainScreen] applicationFrame]];

[photoViewController release];
[self.window addSubview:customNavigationController.view];

//Call method of photoViewController.
[[customNavigationController.viewControllers objectAtIndex:0] addPhotoFromData:info];

[self.tabBarController dismissViewControllerAnimated:YES completion:nil]; //Get rid of UIImagePickerController

ただし、photoViewController では、viewDidLoad で合成およびロードされたインスタンス変数にアクセスできません。それらはすべて null に戻ります。tableView もあり、tableView をリロードする呼び出しは、実際には tableView を応答させません。

これは、photoViewController のコードの一部です。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.photoCount = 0;
    self.timestamp = [[NSDate date] timeIntervalSince1970];
    self.photos = [[NSMutableArray alloc] initWithCapacity:5];
    self.photosData = [[NSMutableArray alloc] initWithCapacity:5];
    self.uploadingCount = 0;

    UINib *customCell = [UINib nibWithNibName:@"CustomTableCell" bundle:[NSBundle mainBundle]];

    [self.tableView registerNib:customCell forCellReuseIdentifier:@"customCell"];
    self.tableView.separatorColor = [UIColor clearColor];

    NSLog(@"%@", self);
}

また、 addPhotoFromData メソッド:

- (void)addPhotoFromData:(NSDictionary *)info
{    
   [self.photos addObject:info];
   NSLog(@"%@", self.photos); //Doesn't add "info" and does not return anything when later called from other methods.

   [self.tableView reloadData]; //Doesn't work

UINavigationController を追加する前は、すべてが機能していました。私は完全に迷っています。

編集:さらにデバッグを試みた後、 addPhotoFromData が呼び出されたときにビューがロードされていないことがわかりました。viewDidLoad はあとがきと呼ばれます。メソッド呼び出しを遅らせる方法はありますか?

4

1 に答える 1

1

addPhotoFromData:メソッド内でPhotoViewController を呼び出すことができない理由はありますviewDidLoadか? ビュー コントローラーからアプリ デリゲートのプロパティにいつでもアクセスできます。

YourAppDelegateType * delegate = [UIApplication sharedApplication].delegate;
[self addPhotoFromData:delegate.info];
于 2012-11-20T03:34:18.393 に答える