#[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 DynBlock<dyn Fn(NonNull<NSArray<UIMenuElement>>) -> *mut UIMenu>
Available on crate features UIMenu
and UIMenuElement
and block2
only.
pub unsafe fn titleMenuProvider( &self, ) -> *mut DynBlock<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<&DynBlock<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<&DynBlock<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.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§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_ref
Source§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