这是我设置关联对象的方法:
objc_setAssociatedObject(navigationItem, "rightButton", leftButtonView, OBJC_ASSOCIATION_RETAIN);
这就是我得到它的方法:
UIButton *favoriteButton = (UIButton *)objc_getAssociatedObject(self.navigationItem, "rightButton");
两个实例中的对象都是 a UIButton
,我#import "objc/runtime.h"
在两个类中都有。
问题是,它曾经可以工作,但现在由于某种原因它返回了null
。有任何想法吗?
编辑
我通过navigationItem
作为参数传递在另一个类中设置关联的对象:
+ (void)setNavigationBarTitle:(NSString *)title
andLeftButton:(NSString *)leftButtonTitle
withSelector:(SEL)leftSelector
andRightButton:(NSString *)rightButtonTitle
withSelector:(SEL)rightSelector
andTarget:(id)target
forNavigationItem:(UINavigationItem *)navigationItem;
我在我的实用程序类中使用这种便捷方法为我的应用程序中的每个新视图控制器设置导航栏。创建导航栏按钮时,我将它们与导航项相关联 - 我在问题中的第一行代码。