-1

私が持っているビューの 1 つの戻るナビゲーションを確認したいだけです。特定のビューは UICollectionViewController です。if ステートメントの正確なコーディングが正しくないことはわかっています。私はそれを行う方法がよくわかりません。私のために空白を埋めますか?

CollectionViewController.m

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

    BOOL isThisViewACollectionView = YES;

}

-(void) viewWillDisappear:(BOOL)animated {
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer
        // in the navigation stack.
        if (isThisViewACollectionView) {
            UIAlertView *cameraAlertView = [[UIAlertView alloc] initWithTitle:@"Camera Not Available" message:@"The camera feature isn't available on your device." delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
            [cameraAlertView show];
        }
    }else{
        [super viewWillDisappear:animated];
    }
}
4

1 に答える 1

1

ロジックに問題があります。viewcontroller を既にドロップしたときに、次のステートメントが呼び出されます。

   if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {

    }

したがって、より良い解決策は、ビューコントローラーが uicollectionView (BOOL としましょう) であるかどうかを認識している "上 (前)" の viewWillDisappear のどこかに値を保持し、この値が true であると仮定してユーザーに警告することです (不足しているコードを埋めます)。

于 2013-10-13T09:02:46.733 に答える