3

どうすればこれを行うことができますか?ポップオーバーにビューを構築するView Controllerを提供する必要があることはわかっていますが、Interface Builderでこのビューを構築する方法がわかりません(ラベルやボタンなどの追加など)。

通常の絵コンテでそれを行い、ランダムに他の何にも接続されていない絵コンテを隅に座らせますか?

別のストーリーボードを作成しますか?

私のプロジェクトはすべてストーリーボードですが、xib を作成する必要がありますか?

プログラムで作成しますか?

4

3 に答える 3

8

質問でターゲットデバイスを指定しなかったので、iPadの回答をしました

iPad:

ストーリーボードにドラッグ アンド ドロップするか、viewcontrollerまたはtableviewcontrollerそれを自由に選択します。viewcontroller次に、ストーリーボードの desired から新しくドラッグ/ドロップされた へのセグエを作成しますviewcontroller。セグエを として選択しますpopOver

ここに画像の説明を入力

ここに画像の説明を入力

上の図のように、セグエ設定でアンカーを選択してください。次に、 popover のサイズを編集する必要があります。uiviewcontrollerビューを選択する場合は、tableviewcontrollerインターフェイス ビルダーの左側にあるテーブルビューを選択し、サイズを編集します。

初め:

ここに画像の説明を入力

2番:

ここに画像の説明を入力

その後、ポップオーバービューコントローラー(ドラッグ/ドロップビューコントローラー)をカスタマイズして、ボタンを追加し、必要に応じてラベルを付けます。

ポップオーバーで追加の操作を行う場合: 新しいファイルを作成することを忘れないでください -> uiviewcontroller または uitableviewcontroller のサブクラス。次に、ストーリーボードで新しく作成したビューコントローラーに関連付けます。

ここに画像の説明を入力

iPhone:

iPhoneにはポップオーバーコントローラーがありません

しかし、サードパーティのhttps://github.com/50pixels/FPPopoverソリューションを使用して、iphone のポップオーバー動作を模倣しようとします。QuartzCore

私は次のことを試みます:

初め:

を再びストーリーボードにドラッグ アンド ドロップしuiviewcontoller、新しいファイル -> のサブクラスを作成しますuiviewcontroller

この新しいuiviewcontrollerものは、ストーリーボードの隅に置かれます

次に、ストーリーボードの uiviewcontroller を新しい Created file に関連付けます。新しいファイル名を で作成したとしましょうYourViewController。ビューにストーリーボード ID を与え、そのクラス名を選択します。

ここに画像の説明を入力

-(IBAction)buttonClicked:(UIButton*)okButton
{
    //the view controller you want to present as popover
    YourViewController *controller = [[YourViewController alloc] init]; 

    //if [[YourViewController alloc] init]; doesn't work try this
   // UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle:nil];
    //YourViewController *controller = [sb instantiateViewControllerWithIdentifier:@"YourViewController"]; 

    //our popover
    FPPopoverController *popover = [[FPPopoverController alloc] initWithViewController:controller]; 

    //the popover will be presented from the okButton view 
    [popover presentPopoverFromView:okButton]; 

    //no release (ARC enable)
    //[controller release];
}

注: 私はその FPPopover を以前に使用したことがないので、画面サイズを調整する方法がわかりませんが、ドキュメントにさらに説明があるはずです。

于 2013-03-28T15:11:12.457 に答える
2

iPhone ソリューション

iOS 8.0以降はiPhoneアプリでも実現可能!

ターゲット ビュー コントローラー (ポップオーバーに表示されるもの) は、「 UIPopoverPresentationControllerDelegate 」プロトコルに準拠する必要があり、メッセージ「adaptivePresentationStyleForPresentationController:traitCollection:」を実装する必要があります。これに加えて、その ' modalPresentationStyle ' は ' UIModalPresentationPopover ' である必要があり、コントローラーは独自の ' UIPopoverPresentationController ' デリゲートである必要があります。

この方法でビュー コントローラーを準備したら、UINavigationBarItem (またはその他のもの) からターゲット ビュー コントローラーへのストーリーボード セグエ (タイプ: 'Present As Popover') を作成します。

ここに画像の説明を入力

実装:

@implementation TestViewController

/*
 initWithCoder:

 */
- (instancetype)initWithCoder:(NSCoder *)pDecoder {
    //FLog;

    if (self = [super initWithCoder:pDecoder]) {

        self.modalPresentationStyle = UIModalPresentationPopover;
        self.popoverPresentationController.delegate = self;
    }
    return self;
}


#pragma mark - POPOVER PRESENTATION CONTROLLER DELEGATE

/*
 adaptivePresentationStyleForPresentationController:traitCollection:

 */
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)pController
                                                               traitCollection:(UITraitCollection *)pTraitCollection {
    //FLog;

    return UIModalPresentationNone;
}

// ...

@end

もちろん、デリゲート プロトコルは他のクラスでも実装できますが、この方法が最も簡単です :-)

于 2016-12-31T08:49:38.497 に答える
1

iPhone デバイスのより良いアプローチは、View の背景色がクリアに設定された View Controller を作成することだと思います。次に、このビューで、ポップアップの外観を与える小さいサイズのビューを追加するだけです。

このView Controllerを提示すると、ポップアップが表示されます。これが私が取ったアプローチです。小さいビューの境界外にある親ビューの領域をユーザーがタップすると、View Controller を閉じることができます。

于 2015-02-26T17:46:16.323 に答える