---
title: TipUIPopoverViewController
framework: tipkit
role: symbol
role_heading: Class
path: tipkit/tipuipopoverviewcontroller
---

# TipUIPopoverViewController

A view controller that displays a popover tip in UIKit applications.

## Declaration

```swift
@MainActor @objc @preconcurrency final class TipUIPopoverViewController
```

## Overview

Overview Use this view controller to present a tip you want to display using UIPopoverPresentationController. Presenting or dismissing TipUIPopoverViewController is done by listening to a tip’s shouldDisplayUpdates or statusUpdates. import TipKit import UIKit

struct CatTracksFeatureTip: Tip {     var title: Text {         Text("Sample tip title")     }

var message: Text? {         Text("Sample tip message")     }

var image: Image? {         Image(systemName: "globe")     } }

class CatTracksViewController: UIViewController {     @IBOutlet weak var catTracksFeatureButton: UIButton!

private var catTracksFeatureTip = CatTracksFeatureTip()     private var tipObservationTask: Task<Void, Never>?     private weak var tipPopoverController: TipUIPopoverViewController?

override func viewDidAppear(_ animated: Bool) {         super.viewDidAppear(animated)

tipObservationTask = tipObservationTask ?? Task { @MainActor in             for await shouldDisplay in catTracksFeatureTip.shouldDisplayUpdates {                 if shouldDisplay {                     let popoverController = TipUIPopoverViewController(catTracksFeatureTip, sourceItem: catTracksFeatureButton)                     present(popoverController, animated: animated)                     tipPopoverController = popoverController                 }                 else {                     if presentedViewController is TipUIPopoverViewController {                         dismiss(animated: animated)                         tipPopoverController = nil                     }                 }             }         }     }

override func viewWillDisappear(_ animated: Bool) {         super.viewWillDisappear(animated)

tipObservationTask?.cancel()         tipObservationTask = nil     } }

## Topics

### Initializers

- [init(_:sourceItem:actionHandler:)](tipkit/tipuipopoverviewcontroller/init(_:sourceitem:actionhandler:).md)
- [init(coder:)](tipkit/tipuipopoverviewcontroller/init(coder:).md)
- [init(nibName:bundle:)](tipkit/tipuipopoverviewcontroller/init(nibname:bundle:).md)

### Instance Properties

- [backgroundColor](tipkit/tipuipopoverviewcontroller/backgroundcolor.md)
- [backgroundStyle](tipkit/tipuipopoverviewcontroller/backgroundstyle.md)
- [imageSize](tipkit/tipuipopoverviewcontroller/imagesize.md)
- [imageStyle](tipkit/tipuipopoverviewcontroller/imagestyle.md)
- [presentationDelegate](tipkit/tipuipopoverviewcontroller/presentationdelegate.md)
- [sourceItem](tipkit/tipuipopoverviewcontroller/sourceitem.md)
- [viewStyle](tipkit/tipuipopoverviewcontroller/viewstyle.md)

## Relationships

### Inherits From

- [UIViewController](uikit/uiviewcontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSExtensionRequestHandling](foundation/nsextensionrequesthandling.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIAppearanceContainer](uikit/uiappearancecontainer.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### UIKit Views

- [TipUIView](tipkit/tipuiview.md)
- [TipUICollectionViewCell](tipkit/tipuicollectionviewcell.md)
- [TipUICollectionReusableView](tipkit/tipuicollectionreusableview.md)
