2

グレー色のビュー (ボタンがある) を非表示/非表示にしたいのですが、クリーム色/ベージュ色の webView の上にあります -添付の写真を参照してください

ページベースのアプリ

xcode で利用できるページ ベースのアプリケーション テンプレートを使用しました。

アプローチ1:コントローラー内
で非表示/非表示同じコントローラーで非表示/再表示しようとしまし
たが、このコントローラーの新しいインスタンスが作成されるたびに問題が発生し、非表示/非表示のブール値が失われます

アプローチ 2: プロトコルとデリゲート
また、デリゲート/プロトコルを使用して親コントローラーからのステータスを維持しようとしましたが、ブロック内に入ることはありません -
if ([self.delegateReadingToolbar........ ブロックが呼び出されることはありません。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];

if(touch)
{

    CGPoint location = [touch locationInView: [touch view]];

    if (CGRectContainsPoint(webViewTouch,  location))
    {

        //do whatever
        NSLog(@"webView Touched");

        if (self.showReadingToolBar)
        {

            self.showReadingToolBar = NO; // approach 1
            self.viewReadingToolBar.hidden = NO;

            // approach 2
            if ([self.delegateReadingToolbar respondsToSelector:@selector(contentViewDidFinish:showStatus:)]) 
            { // this block is never called

                [self.delegateReadingToolbar contentViewDidFinish:self showStatus:NO];

            }


        }
        else
        {

            self.showReadingToolBar = YES;
            self.viewReadingToolBar.hidden = YES;
            [self.delegateReadingToolbar contentViewDidFinish:self showStatus:YES];

        }



    }
}

}

アプローチ 2 コーディングの場合:

ChildController.h

@class ChildController;

@protocol ReadingToolbarShowDelegate <NSObject>

-(void)contentViewDidFinish:(contentView *)controller showStatus:(BOOL)show;

@end

@property (nonatomic,weak)id<ReadingToolbarShowDelegate>delegateReadingToolbar;

ParentController.h

#import "ChildController.h"

@interface ParentController :      UIViewController<UIPageViewControllerDataSource,UIPageViewControllerDelegate,ReadingToolbarShowDelegate>

ParentController.m

-(void)ChildControllerDidFinish:(contentView *)controller showStatus:(BOOL)show
{

   showReadingToolbar = show;
}
4

1 に答える 1

4

新しいコントローラーを割り当て/初期化すると、以前に設定された値は失われます。基本的に新しいオブジェクトを作成しています。これを行うには、いくつかの方法があります。

  1. コントローラーをナビゲーション コントローラー内に配置し、他のコントローラーをスタックにプッシュしたり、スタックからプッシュしたりするだけです。この方法では、新しいオブジェクトをインスタンス化する必要はありません。

  2. 目的の表示設定を NSUserDefaults キーと値のペアに保存できます。このタイプの新しいオブジェクトを作成する必要があるときはいつでも、NSUserDefault の値を検索します。

于 2013-11-01T10:17:29.613 に答える