簡體   English   中英

在Interface Builder中為Iphone創建popover視圖控制器

[英]Creating popover view controllers for Iphone in Interface Builder

我該怎么做呢? 我知道我必須給popover一個視圖控制器,它構建它的視圖,但我不知道如何在Interface Builder中構建這個視圖(比如添加標簽和按鈕等等)。

我是否只是在普通的故事板中進行操作,並且有一個隨機地與其他任何東西無關的故事板,坐在角落里?

我是否創建了另一個故事板?

即使我的項目都是故事板,我也會創建一個xib嗎?

我是以編程方式創建的嗎?

由於你沒有在你的問題中指定目標設備,我給你Ipad答案

IPAD:

轉到您的故事板,將viewcontrollertableviewcontroller拖放到您的身上。 然后在故事板上從所需的viewcontroller創建一個segue到新拖放的viewcontroller 選擇你的segue作為popOver

在此輸入圖像描述

在此輸入圖像描述

確保在segue設置中選擇錨點,如上圖所示。 然后,您需要編輯彈出窗口的大小。 如果它是一個uiviewcontroller選擇自己的看法,如果其tableviewcontroller選擇在界面生成器的左側它的tableview和編輯它的大小。

第一:

在此輸入圖像描述

第二:

在此輸入圖像描述

之后,自定義您的彈出視圖控制器(拖放視圖控制器)添加按鈕,標記您想要的任何內容。

如果你打算在你的popover中做更多的事情:別忘了創建新文件 - > uiviewcontroller或uitableviewcontroller的子類。 然后將它與故事板上新創建的viewcontroller關聯。

在此輸入圖像描述

蘋果手機:

iphone中沒有Popover控制器

但是你嘗試使用QuartzCore第三方https://github.com/50pixels/FPPopover解決方案來模仿iphone中的QuartzCore行為

我會嘗試以下:

第一:

再次將uiviewcontoller拖放到故事板中,然后創建一個新文件 - > uiviewcontroller子類。

這個新的uiviewcontroller將位於故事板的角落

然后將故事板中的uiviewcontroller與新創建的文件相關聯,假設您使用YourViewController創建了一個新文件名。 為您的視圖提供一個storyboard 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因此不知道如何安排屏幕尺寸,但是在他們的文檔中必須進一步解釋才能閱讀它。

我認為iPhone設備的更好方法是,創建一個View控件,其View的背景顏色設置為clear。 然后在此視圖中,您只需添加一個較小的視圖,該視圖將顯示彈出窗口的外觀。

呈現此視圖控制器將給出彈出窗口的外觀。 這是我采取的方法。 如果用戶點擊父視圖上不在較小視圖范圍之外的區域,則可以關閉視圖控制器。

iPhone解決方案

由於iOS 8.0也可以為iPhone應用程序實現這一點!

目標視圖控制器(應該出現在彈出框中的那個 )需要符合' UIPopoverPresentationControllerDelegate '協議,並且必須實現消息' adaptivePresentationStyleForPresentationController:traitCollection: '。 除此之外,它的' modalPresentationStyle '應該是' UIModalPresentationPopover ',控制器應該是他自己的' UIPopoverPresentationController '委托。

在以這種方式准備視圖控制器之后,只需從UINavigationBarItem(或其他任何內容)創建一個storyboard segue(類型:'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

當然委托協議也可以在其他類中實現,但這種方式最簡單:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM