【问题标题】:Create navigation item with default Icon programatically IOS以编程方式使用默认图标创建导航项 IOS
【发布时间】:2016-08-16 03:34:26
【问题描述】:

我想以编程方式使用默认的 XCode 刷新图标创建导航项“刷新”。我知道如何使用以下代码创建一个带有“刷新”一词的代码。但是,我想在“刷新”这个词的前面加上图标。感谢您提前提供帮助

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

【问题讨论】:

  • 好问题已经问过了。
  • 检查我对目标 c 和 swift 的更新答案。

标签: ios swift uinavigationbar


【解决方案1】:

绝妙的问题。我为您的问题尝试了示例一。我得到了解决方案并且效果很好。

你在编码中犯的错误是

首先是你的

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

查看屏幕截图中的刷新按钮

好的解决方案

Add Default Icons to Navigation Bar

Navigation Bar Item Programmatically

Adding Navigation Bar item Programmatically

【讨论】:

    【解决方案2】:

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

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

    您还应该使用init(barButtonSystemItem:target:action:) 而不是init(title:style:target:action:)

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多