Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 整个应用程序中的自定义后退按钮UINavigationController_Objective C_Ios_Uinavigationcontroller_Custom Controls - Fatal编程技术网

Objective c 整个应用程序中的自定义后退按钮UINavigationController

Objective c 整个应用程序中的自定义后退按钮UINavigationController,objective-c,ios,uinavigationcontroller,custom-controls,Objective C,Ios,Uinavigationcontroller,Custom Controls,我希望在整个应用程序中更换UINavigationController中的“后退”按钮。我的要求是在一个XIB中定义这个后退按钮,如果可能的话,设置它的代码在一个地方 我看到过将属性self.navigationItem.backBarButtonItem设置为一个UIBarButtonItem,并将自定义按钮作为其视图,例如[[UIBarButtonItem alloc]initWithCustomView:myButton] 我的第一个想法是创建一个全局类别(不确定这是否是术语,您可能已经猜

我希望在整个应用程序中更换UINavigationController中的“后退”按钮。我的要求是在一个XIB中定义这个后退按钮,如果可能的话,设置它的代码在一个地方

我看到过将属性
self.navigationItem.backBarButtonItem
设置为一个UIBarButtonItem,并将自定义按钮作为其视图,例如
[[UIBarButtonItem alloc]initWithCustomView:myButton]

我的第一个想法是创建一个全局类别(不确定这是否是术语,您可能已经猜到,我是Objective-C新手),为我的所有UINavigationController实现“ViewDidLoad”,并设置此属性。我的问题是将XIB加载到我在运行时创建的这个按钮

有没有人对一种简洁的方法有什么建议(我想这一定是一种常见的做法,我无法想象在我所有的屏幕上重复代码)。我已经考虑过创建一个
UINavigationController
子类,但是我不确定这会对ViewDidLoad的自定义实现产生什么影响


非常感谢您的建议。此外,我还需要将>=iOS4作为目标(外观API仅限于iOS5)。

我在当前项目中遇到了相同的问题,我提出的解决方案是创建一个不带xib的MYBaseViewController基类,并以编程方式在viewDidLoad中加载(如果您想使用自定义视图初始化barButtonItem,那么无论如何都无法在xib中创建)创建一个customBackButton(当然,释放它并设置为nil viewDidUnload)


这对我来说很好,因为这样我可以为MYBaseViewController的所有其他ViewController子类创建XIB(如果在nib中为基类创建视图,则无法为子类创建nib).

我在当前项目中也遇到了同样的问题,我提出的解决方案是创建一个没有xib的MYBaseViewController基类,然后在viewDidLoad中以编程方式加载(如果您想使用自定义视图初始化BarButtonim,您无论如何都无法在xib中创建)创建一个customBackButton(当然,释放它并设置为nil viewDidUnload


这对我来说很好,因为这样我可以为MYBaseViewController子类的所有其他ViewController创建XIB(如果您在nib中为基类创建视图,您将无法为子类创建nib)。

我不希望在可能的情况下强制继承,因此您可以使用两个类别来执行此操作

@interface UIViewController (backButtonAdditions)

- (void)ps_addBackbutton;

@end

@implementation UIViewController (backButtonAdditions)

- (void)ps_addBackbutton;
{
    // add back button
}

@end

现在,根据需要导入这些文件,而不是使用

[self.navigationController pushViewController:aViewController YES];
使用

免责声明
我在浏览器中自由设置了样式,因此您可能需要对其进行调整

我不希望在可能的情况下强制继承,因此您可以使用两个类别来完成此操作

@interface UIViewController (backButtonAdditions)

- (void)ps_addBackbutton;

@end

@implementation UIViewController (backButtonAdditions)

- (void)ps_addBackbutton;
{
    // add back button
}

@end

现在,根据需要导入这些文件,而不是使用

[self.navigationController pushViewController:aViewController YES];
使用

免责声明 我在浏览器中自由设置了这个样式,所以您可能需要调整它