使用默认图标以编程方式创建IOS导航项

时间:2016-08-16 03:34:27

标签: ios swift uinavigationbar

我想以编程方式使用默认的XCode刷新图标创建导航项“刷新”。我知道如何使用以下代码创建一个单词“Refresh”。但是,我希望图标不含“刷新”这个词,感谢您提前帮助     let refreshButton = UIBarButtonItem(title:“Refresh”,style:UIBarButtonItemStyle.Plain,target:self,action:#selector(FollowVC.refresh))

2 个答案:

答案 0 :(得分:7)

精湛的问题。我为你的问题试了一个样品。我得到了解决方案并且工作正常。

你在编码中犯了什么错误

首先你的

let refreshButton = UIBarButtonItem(title: "Refresh", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(FollowVC.refresh)) 

是错误的。你必须使用或写

UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem, target: AnyObject?, action:Selector)

其次你使用了 UIBarButtonItemStyle.Plain 。如果你想要刷新按钮,你必须设置 UIBarButtonSystemItem.Refresh

<强> SWIFT

override func viewDidLoad()
{
    // Create the navigation bar
    let navigationBar = UINavigationBar(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: self.view.frame.size.width, height: 64))) // set frame here

    //set the background color
    navigationBar.backgroundColor = UIColor.white
    navigationBar.delegate = self as? UINavigationBarDelegate;

    // Create a navigation item with a title
    let navigationItem = UINavigationItem()
    navigationItem.title = "title" //If you want to set a tilte set here.Whatever you want set here.

    // Create  button for navigation item with refresh
    let refreshButton =  UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.refresh, target: self, action: Selector(("actionRefresh:")))


    // I set refreshButton for the navigation item
    navigationItem.leftBarButtonItem = refreshButton


    // Assign the navigation item to the navigation bar
    navigationBar.items = [navigationItem]

    // Make the navigation bar a subview of the current view controller
    self.view.addSubview(navigationBar)

}

#pragma action method

func actionRefresh(sender: UIBarButtonItem) 
{
  print("The action button is refreshed")
}

打印声明

The action button is refreshed

目标C

- (void)viewDidLoad 
{
   [super viewDidLoad];
   // Do any additional setup after loading the view, typically from a nib.
   UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

   navbar.backgroundColor = [UIColor whiteColor];   

   navbar.delegate = self;
   UINavigationItem * navItem = [[UINavigationItem alloc] init];

   navItem.title = @"Title";  //Set Title Here Wahtever You Want Here
   UIBarButtonItem *buttonRefresh = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
                           target:self
                           action:@selector(actionRefresh:)];

   navItem.leftBarButtonItem = buttonRefresh;
   navbar.items = @[navItem];
   [self.view addSubview:navbar];
 }

NSLog语句是

The button action refresh is performed

请参阅屏幕截图中的刷新按钮

enter image description here

良好的解决方案

Add Default Icons to Navigation Bar

Navigation Bar Item Programmatically

Adding Navigation Bar item Programmatically

答案 1 :(得分:2)

您应该使用.Plain而不是.Refresh

let refreshButton = UIBarButtonItem(barButtonSystemItem: .Refresh, target: self, action: #selector(FollowVC.refresh))

此外,您应该使用init(barButtonSystemItem:target:action:)代替init(title:style:target:action:)