#[repr(C)]pub struct UINavigationItem { /* private fields */ }UINavigationItem only.Expand description
Implementations§
pub unsafe fn initWithTitle( this: Allocated<Self>, title: &NSString, ) -> Retained<Self>
pub unsafe fn initWithCoder( this: Allocated<Self>, coder: &NSCoder, ) -> Option<Retained<Self>>
Sourcepub unsafe fn title(&self) -> Option<Retained<NSString>>
pub unsafe fn title(&self) -> Option<Retained<NSString>>
Title when topmost on the stack. default is nil
Sourcepub unsafe fn titleView(&self) -> Option<Retained<UIView>>
Available on crate features UIResponder and UIView only.
pub unsafe fn titleView(&self) -> Option<Retained<UIView>>
UIResponder and UIView only.Custom view to use in lieu of a title. May be sized horizontally. Only used when item is topmost on the stack.
Sourcepub unsafe fn setTitleView(&self, title_view: Option<&UIView>)
Available on crate features UIResponder and UIView only.
pub unsafe fn setTitleView(&self, title_view: Option<&UIView>)
UIResponder and UIView only.Setter for titleView.
Sourcepub unsafe fn prompt(&self) -> Option<Retained<NSString>>
pub unsafe fn prompt(&self) -> Option<Retained<NSString>>
Explanatory text to display above the navigation bar buttons.
Sourcepub unsafe fn backBarButtonItem(&self) -> Option<Retained<UIBarButtonItem>>
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn backBarButtonItem(&self) -> Option<Retained<UIBarButtonItem>>
UIBarButtonItem and UIBarItem only.Bar button item to use for the back button when this item is the navigation bar’s backItem.
Sourcepub unsafe fn setBackBarButtonItem(
&self,
back_bar_button_item: Option<&UIBarButtonItem>,
)
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn setBackBarButtonItem( &self, back_bar_button_item: Option<&UIBarButtonItem>, )
UIBarButtonItem and UIBarItem only.Setter for backBarButtonItem.
Sourcepub unsafe fn backButtonTitle(&self) -> Option<Retained<NSString>>
pub unsafe fn backButtonTitle(&self) -> Option<Retained<NSString>>
Title to use when this item is the navigation bar’s backItem. Default is nil. backBarButtonItem takes precedence if both are specified.
Sourcepub unsafe fn setBackButtonTitle(&self, back_button_title: Option<&NSString>)
pub unsafe fn setBackButtonTitle(&self, back_button_title: Option<&NSString>)
Setter for backButtonTitle.
Sourcepub unsafe fn hidesBackButton(&self) -> bool
pub unsafe fn hidesBackButton(&self) -> bool
If YES, this navigation item will hide the back button when it’s on top of the stack.
Sourcepub unsafe fn setHidesBackButton(&self, hides_back_button: bool)
pub unsafe fn setHidesBackButton(&self, hides_back_button: bool)
Setter for hidesBackButton.
pub unsafe fn setHidesBackButton_animated( &self, hides_back_button: bool, animated: bool, )
Sourcepub unsafe fn backButtonDisplayMode(
&self,
) -> UINavigationItemBackButtonDisplayMode
pub unsafe fn backButtonDisplayMode( &self, ) -> UINavigationItemBackButtonDisplayMode
Controls how the back button sources its title.
Sourcepub unsafe fn setBackButtonDisplayMode(
&self,
back_button_display_mode: UINavigationItemBackButtonDisplayMode,
)
pub unsafe fn setBackButtonDisplayMode( &self, back_button_display_mode: UINavigationItemBackButtonDisplayMode, )
Setter for backButtonDisplayMode.
Sourcepub unsafe fn backAction(&self) -> Option<Retained<UIAction>>
Available on crate features UIAction and UIMenuElement only.
pub unsafe fn backAction(&self) -> Option<Retained<UIAction>>
UIAction and UIMenuElement only.Replaces the back action for the navigation bar. if a back button is naturally present, this replaces only its action, otherwise a back button will be synthesized with the image or title from the action.
Sourcepub unsafe fn setBackAction(&self, back_action: Option<&UIAction>)
Available on crate features UIAction and UIMenuElement only.
pub unsafe fn setBackAction(&self, back_action: Option<&UIAction>)
UIAction and UIMenuElement only.Setter for backAction.
Sourcepub unsafe fn titleMenuProvider(
&self,
) -> *mut Block<dyn Fn(NonNull<NSArray<UIMenuElement>>) -> *mut UIMenu>
Available on crate features UIMenu and UIMenuElement and block2 only.
pub unsafe fn titleMenuProvider( &self, ) -> *mut Block<dyn Fn(NonNull<NSArray<UIMenuElement>>) -> *mut UIMenu>
UIMenu and UIMenuElement and block2 only.When non-nil, UIKit will generate suggestedActions and call this block to generate a menu that is displayed from the title.
Sourcepub unsafe fn setTitleMenuProvider(
&self,
title_menu_provider: Option<&Block<dyn Fn(NonNull<NSArray<UIMenuElement>>) -> *mut UIMenu>>,
)
Available on crate features UIMenu and UIMenuElement and block2 only.
pub unsafe fn setTitleMenuProvider( &self, title_menu_provider: Option<&Block<dyn Fn(NonNull<NSArray<UIMenuElement>>) -> *mut UIMenu>>, )
UIMenu and UIMenuElement and block2 only.Setter for titleMenuProvider.
Sourcepub unsafe fn renameDelegate(
&self,
) -> Option<Retained<ProtocolObject<dyn UINavigationItemRenameDelegate>>>
pub unsafe fn renameDelegate( &self, ) -> Option<Retained<ProtocolObject<dyn UINavigationItemRenameDelegate>>>
When non-nil, enables the UINavigationBar to respond to the rename: action by providing an inline UI. Setting this property to nil while a rename operation is in progress will cancel the operation immediately.
Sourcepub unsafe fn setRenameDelegate(
&self,
rename_delegate: Option<&ProtocolObject<dyn UINavigationItemRenameDelegate>>,
)
pub unsafe fn setRenameDelegate( &self, rename_delegate: Option<&ProtocolObject<dyn UINavigationItemRenameDelegate>>, )
This is a weak property.
Setter for renameDelegate.
Sourcepub unsafe fn documentProperties(
&self,
) -> Option<Retained<UIDocumentProperties>>
Available on crate feature UIDocumentProperties only.
pub unsafe fn documentProperties( &self, ) -> Option<Retained<UIDocumentProperties>>
UIDocumentProperties only.When non-nil, UIKit will use the metadata provided to generate additional controls displayed from the title.
Sourcepub unsafe fn setDocumentProperties(
&self,
document_properties: Option<&UIDocumentProperties>,
)
Available on crate feature UIDocumentProperties only.
pub unsafe fn setDocumentProperties( &self, document_properties: Option<&UIDocumentProperties>, )
UIDocumentProperties only.Setter for documentProperties.
pub unsafe fn leftBarButtonItems( &self, ) -> Option<Retained<NSArray<UIBarButtonItem>>>
UIBarButtonItem and UIBarItem only.Sourcepub unsafe fn setLeftBarButtonItems(
&self,
left_bar_button_items: Option<&NSArray<UIBarButtonItem>>,
)
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn setLeftBarButtonItems( &self, left_bar_button_items: Option<&NSArray<UIBarButtonItem>>, )
UIBarButtonItem and UIBarItem only.Setter for leftBarButtonItems.
pub unsafe fn rightBarButtonItems( &self, ) -> Option<Retained<NSArray<UIBarButtonItem>>>
UIBarButtonItem and UIBarItem only.Sourcepub unsafe fn setRightBarButtonItems(
&self,
right_bar_button_items: Option<&NSArray<UIBarButtonItem>>,
)
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn setRightBarButtonItems( &self, right_bar_button_items: Option<&NSArray<UIBarButtonItem>>, )
UIBarButtonItem and UIBarItem only.Setter for rightBarButtonItems.
pub unsafe fn setLeftBarButtonItems_animated( &self, items: Option<&NSArray<UIBarButtonItem>>, animated: bool, )
UIBarButtonItem and UIBarItem only.pub unsafe fn setRightBarButtonItems_animated( &self, items: Option<&NSArray<UIBarButtonItem>>, animated: bool, )
UIBarButtonItem and UIBarItem only.pub unsafe fn leftItemsSupplementBackButton(&self) -> bool
Sourcepub unsafe fn setLeftItemsSupplementBackButton(
&self,
left_items_supplement_back_button: bool,
)
pub unsafe fn setLeftItemsSupplementBackButton( &self, left_items_supplement_back_button: bool, )
Setter for leftItemsSupplementBackButton.
Sourcepub unsafe fn leftBarButtonItem(&self) -> Option<Retained<UIBarButtonItem>>
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn leftBarButtonItem(&self) -> Option<Retained<UIBarButtonItem>>
UIBarButtonItem and UIBarItem only.Some navigation items want to display a custom left or right item when they’re on top of the stack. A custom left item replaces the regular back button unless you set leftItemsSupplementBackButton to YES
Sourcepub unsafe fn setLeftBarButtonItem(
&self,
left_bar_button_item: Option<&UIBarButtonItem>,
)
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn setLeftBarButtonItem( &self, left_bar_button_item: Option<&UIBarButtonItem>, )
UIBarButtonItem and UIBarItem only.Setter for leftBarButtonItem.
pub unsafe fn rightBarButtonItem(&self) -> Option<Retained<UIBarButtonItem>>
UIBarButtonItem and UIBarItem only.Sourcepub unsafe fn setRightBarButtonItem(
&self,
right_bar_button_item: Option<&UIBarButtonItem>,
)
Available on crate features UIBarButtonItem and UIBarItem only.
pub unsafe fn setRightBarButtonItem( &self, right_bar_button_item: Option<&UIBarButtonItem>, )
UIBarButtonItem and UIBarItem only.Setter for rightBarButtonItem.
pub unsafe fn setLeftBarButtonItem_animated( &self, item: Option<&UIBarButtonItem>, animated: bool, )
UIBarButtonItem and UIBarItem only.pub unsafe fn setRightBarButtonItem_animated( &self, item: Option<&UIBarButtonItem>, animated: bool, )
UIBarButtonItem and UIBarItem only.Sourcepub unsafe fn customizationIdentifier(&self) -> Option<Retained<NSString>>
pub unsafe fn customizationIdentifier(&self) -> Option<Retained<NSString>>
Setting a non-nil customizationIdentifier enables customization and UIKit will automatically save & restore customizations based on this identifier. The identifier must be unique within the scope of the application.
Sourcepub unsafe fn setCustomizationIdentifier(
&self,
customization_identifier: Option<&NSString>,
)
pub unsafe fn setCustomizationIdentifier( &self, customization_identifier: Option<&NSString>, )
Setter for customizationIdentifier.
Sourcepub unsafe fn leadingItemGroups(
&self,
) -> Retained<NSArray<UIBarButtonItemGroup>>
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn leadingItemGroups( &self, ) -> Retained<NSArray<UIBarButtonItemGroup>>
UIBarButtonItemGroup only.UIBarButtonItemGroups to be displayed in the leading section of the navigation bar. Items set via this method will replace items set via .leftBarButtonItem or .leftBarButtonItems.
Sourcepub unsafe fn setLeadingItemGroups(
&self,
leading_item_groups: &NSArray<UIBarButtonItemGroup>,
)
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn setLeadingItemGroups( &self, leading_item_groups: &NSArray<UIBarButtonItemGroup>, )
UIBarButtonItemGroup only.Setter for leadingItemGroups.
Sourcepub unsafe fn centerItemGroups(&self) -> Retained<NSArray<UIBarButtonItemGroup>>
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn centerItemGroups(&self) -> Retained<NSArray<UIBarButtonItemGroup>>
UIBarButtonItemGroup only.Customizable UIBarButtonItemGroups that will be placed in the center region when the navigation bar is the browser or editor modes. In navigation mode, these items will be placed in the overflow.
Sourcepub unsafe fn setCenterItemGroups(
&self,
center_item_groups: &NSArray<UIBarButtonItemGroup>,
)
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn setCenterItemGroups( &self, center_item_groups: &NSArray<UIBarButtonItemGroup>, )
UIBarButtonItemGroup only.Setter for centerItemGroups.
Sourcepub unsafe fn trailingItemGroups(
&self,
) -> Retained<NSArray<UIBarButtonItemGroup>>
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn trailingItemGroups( &self, ) -> Retained<NSArray<UIBarButtonItemGroup>>
UIBarButtonItemGroup only.UIBarButtonItemGroups to be displayed in the trailing section of the navigation bar. Items set via this method will replace items set via .rightBarButtonItem or .rightBarButtonItems.
Sourcepub unsafe fn setTrailingItemGroups(
&self,
trailing_item_groups: &NSArray<UIBarButtonItemGroup>,
)
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn setTrailingItemGroups( &self, trailing_item_groups: &NSArray<UIBarButtonItemGroup>, )
UIBarButtonItemGroup only.Setter for trailingItemGroups.
Sourcepub unsafe fn pinnedTrailingGroup(
&self,
) -> Option<Retained<UIBarButtonItemGroup>>
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn pinnedTrailingGroup( &self, ) -> Option<Retained<UIBarButtonItemGroup>>
UIBarButtonItemGroup only.Set a group of items to be placed on the trailing edge of the bar, past the overflow & search items (if present). If you wish to have more than 1 item, it is HIGHLY recommended to assign a representative item to the group to avoid overflowing the bar as this group cannot move to the overflow.
Sourcepub unsafe fn setPinnedTrailingGroup(
&self,
pinned_trailing_group: Option<&UIBarButtonItemGroup>,
)
Available on crate feature UIBarButtonItemGroup only.
pub unsafe fn setPinnedTrailingGroup( &self, pinned_trailing_group: Option<&UIBarButtonItemGroup>, )
UIBarButtonItemGroup only.Setter for pinnedTrailingGroup.
Sourcepub unsafe fn additionalOverflowItems(
&self,
) -> Option<Retained<UIDeferredMenuElement>>
Available on crate features UIDeferredMenuElement and UIMenuElement only.
pub unsafe fn additionalOverflowItems( &self, ) -> Option<Retained<UIDeferredMenuElement>>
UIDeferredMenuElement and UIMenuElement only.Additional items to add to the overflow menu. Setting this property to a non-nil value will force the overflow button to appear, regardless of if you provide any content in the element’s callback. Items returned are displayed directly in the presented menu.
Sourcepub unsafe fn setAdditionalOverflowItems(
&self,
additional_overflow_items: Option<&UIDeferredMenuElement>,
)
Available on crate features UIDeferredMenuElement and UIMenuElement only.
pub unsafe fn setAdditionalOverflowItems( &self, additional_overflow_items: Option<&UIDeferredMenuElement>, )
UIDeferredMenuElement and UIMenuElement only.Setter for additionalOverflowItems.
Sourcepub unsafe fn overflowPresentationSource(
&self,
) -> Option<Retained<ProtocolObject<dyn UIPopoverPresentationControllerSourceItem>>>
Available on crate feature UIPopoverPresentationControllerSourceItem only.
pub unsafe fn overflowPresentationSource( &self, ) -> Option<Retained<ProtocolObject<dyn UIPopoverPresentationControllerSourceItem>>>
UIPopoverPresentationControllerSourceItem only.If the overflow button for this item is currently present, then this will return a non-nil item that can be used as a presentation source (e.g. for popovers). Otherwise it will return nil.
Sourcepub unsafe fn largeTitleDisplayMode(
&self,
) -> UINavigationItemLargeTitleDisplayMode
pub unsafe fn largeTitleDisplayMode( &self, ) -> UINavigationItemLargeTitleDisplayMode
When UINavigationBar.prefersLargeTitles=YES, this property controls when the larger out-of-line title is displayed. If prefersLargeTitles=NO, this property has no effect. The default value is Automatic.
Sourcepub unsafe fn setLargeTitleDisplayMode(
&self,
large_title_display_mode: UINavigationItemLargeTitleDisplayMode,
)
pub unsafe fn setLargeTitleDisplayMode( &self, large_title_display_mode: UINavigationItemLargeTitleDisplayMode, )
Setter for largeTitleDisplayMode.
Sourcepub unsafe fn style(&self) -> UINavigationItemStyle
pub unsafe fn style(&self) -> UINavigationItemStyle
Controls how content defined by this item is laid out in the navigation bar.
Sourcepub unsafe fn setStyle(&self, style: UINavigationItemStyle)
pub unsafe fn setStyle(&self, style: UINavigationItemStyle)
Setter for style.
Sourcepub unsafe fn searchController(&self) -> Option<Retained<UISearchController>>
Available on crate features UIResponder and UISearchController and UIViewController only.
pub unsafe fn searchController(&self) -> Option<Retained<UISearchController>>
UIResponder and UISearchController and UIViewController only.A view controller that will be shown inside of a navigation controller can assign a UISearchController to this property to display the search controller’s search bar in its containing navigation controller’s navigation bar.
Sourcepub unsafe fn setSearchController(
&self,
search_controller: Option<&UISearchController>,
)
Available on crate features UIResponder and UISearchController and UIViewController only.
pub unsafe fn setSearchController( &self, search_controller: Option<&UISearchController>, )
UIResponder and UISearchController and UIViewController only.Setter for searchController.
Sourcepub unsafe fn hidesSearchBarWhenScrolling(&self) -> bool
pub unsafe fn hidesSearchBarWhenScrolling(&self) -> bool
If this property is true (the default), the searchController’s search bar will hide as the user scrolls in the top view controller’s scroll view. If false, the search bar will remain visible and pinned underneath the navigation bar. Not appicable and ignored for UINavigationItemSearchBarPlacementInline
Sourcepub unsafe fn setHidesSearchBarWhenScrolling(
&self,
hides_search_bar_when_scrolling: bool,
)
pub unsafe fn setHidesSearchBarWhenScrolling( &self, hides_search_bar_when_scrolling: bool, )
Setter for hidesSearchBarWhenScrolling.
Sourcepub unsafe fn preferredSearchBarPlacement(
&self,
) -> UINavigationItemSearchBarPlacement
pub unsafe fn preferredSearchBarPlacement( &self, ) -> UINavigationItemSearchBarPlacement
The preferred search bar placement, when a search controller is assigned to this item.
Sourcepub unsafe fn setPreferredSearchBarPlacement(
&self,
preferred_search_bar_placement: UINavigationItemSearchBarPlacement,
)
pub unsafe fn setPreferredSearchBarPlacement( &self, preferred_search_bar_placement: UINavigationItemSearchBarPlacement, )
Setter for preferredSearchBarPlacement.
Sourcepub unsafe fn searchBarPlacement(&self) -> UINavigationItemSearchBarPlacement
pub unsafe fn searchBarPlacement(&self) -> UINavigationItemSearchBarPlacement
The realized placement. Only valid if a search controller has been assigned to this item.
Sourcepub unsafe fn standardAppearance(
&self,
) -> Option<Retained<UINavigationBarAppearance>>
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn standardAppearance( &self, ) -> Option<Retained<UINavigationBarAppearance>>
UIBarAppearance and UINavigationBarAppearance only.When set and this item is topmost, overrides the hosting navigation bar’s standardAppearance. See UINavigationBar.standardAppearance for further details.
Sourcepub unsafe fn setStandardAppearance(
&self,
standard_appearance: Option<&UINavigationBarAppearance>,
)
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn setStandardAppearance( &self, standard_appearance: Option<&UINavigationBarAppearance>, )
UIBarAppearance and UINavigationBarAppearance only.Setter for standardAppearance.
Sourcepub unsafe fn compactAppearance(
&self,
) -> Option<Retained<UINavigationBarAppearance>>
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn compactAppearance( &self, ) -> Option<Retained<UINavigationBarAppearance>>
UIBarAppearance and UINavigationBarAppearance only.When set and this item is topmost, overrides the hosting navigation bar’s compactAppearance. See UINavigationBar.compactAppearance for further details.
Sourcepub unsafe fn setCompactAppearance(
&self,
compact_appearance: Option<&UINavigationBarAppearance>,
)
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn setCompactAppearance( &self, compact_appearance: Option<&UINavigationBarAppearance>, )
UIBarAppearance and UINavigationBarAppearance only.Setter for compactAppearance.
Sourcepub unsafe fn scrollEdgeAppearance(
&self,
) -> Option<Retained<UINavigationBarAppearance>>
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn scrollEdgeAppearance( &self, ) -> Option<Retained<UINavigationBarAppearance>>
UIBarAppearance and UINavigationBarAppearance only.When set and this item is topmost, overrides the hosting navigation bar’s scrollEdgeAppearance. See UINavigationBar.scrollEdgeAppearance for further details.
Sourcepub unsafe fn setScrollEdgeAppearance(
&self,
scroll_edge_appearance: Option<&UINavigationBarAppearance>,
)
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn setScrollEdgeAppearance( &self, scroll_edge_appearance: Option<&UINavigationBarAppearance>, )
UIBarAppearance and UINavigationBarAppearance only.Setter for scrollEdgeAppearance.
Sourcepub unsafe fn compactScrollEdgeAppearance(
&self,
) -> Option<Retained<UINavigationBarAppearance>>
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn compactScrollEdgeAppearance( &self, ) -> Option<Retained<UINavigationBarAppearance>>
UIBarAppearance and UINavigationBarAppearance only.When set and this item is topmost, overrides the hosting navigation bar’s compactScrollEdgeAppearance. See UINavigationBar.h for further details.
Sourcepub unsafe fn setCompactScrollEdgeAppearance(
&self,
compact_scroll_edge_appearance: Option<&UINavigationBarAppearance>,
)
Available on crate features UIBarAppearance and UINavigationBarAppearance only.
pub unsafe fn setCompactScrollEdgeAppearance( &self, compact_scroll_edge_appearance: Option<&UINavigationBarAppearance>, )
UIBarAppearance and UINavigationBarAppearance only.Setter for compactScrollEdgeAppearance.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
Available on crate feature UIIndirectScribbleInteraction only.
pub fn class(&self) -> &'static AnyClass
UIIndirectScribbleInteraction only.Dynamically find the class of this object.
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.Available on crate feature UIIndirectScribbleInteraction only.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.UIIndirectScribbleInteraction only.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Available on crate feature UIIndirectScribbleInteraction only.
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
UIIndirectScribbleInteraction only.Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§const NAME: &'static str = "UINavigationItem"
const NAME: &'static str = "UINavigationItem"
Source§type ThreadKind = dyn MainThreadOnly
type ThreadKind = dyn MainThreadOnly
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_refSource§fn isMemberOfClass(&self, cls: &AnyClass) -> bool
fn isMemberOfClass(&self, cls: &AnyClass) -> bool
Source§fn respondsToSelector(&self, aSelector: Sel) -> bool
fn respondsToSelector(&self, aSelector: Sel) -> bool
Source§fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
Source§fn debugDescription(&self) -> Retained<NSObject>
fn debugDescription(&self) -> Retained<NSObject>
Source§const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF
const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF
Auto Trait Implementations§
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<'a, T> MainThreadOnly for T
impl<'a, T> MainThreadOnly for T
Source§fn mtm(&self) -> MainThreadMarker
fn mtm(&self) -> MainThreadMarker
MainThreadMarker from the main-thread-only object. Read more