Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Ios 以编程方式创建带有默认图标的导航项_Ios_Swift_Uinavigationbar - Fatal编程技术网

Ios 以编程方式创建带有默认图标的导航项

Ios 以编程方式创建带有默认图标的导航项,ios,swift,uinavigationbar,Ios,Swift,Uinavigationbar,我想以编程方式创建一个带有默认XCode刷新图标的导航项“刷新”。我知道如何用下面的代码创建一个带有单词“Refresh”的。不过,我想在图标中插入“刷新”一词,感谢您的帮助 let refreshButton = UIBarButtonItem(title: "Refresh", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(FollowVC.refresh)) 您应该使用.Refresh,而不是

我想以编程方式创建一个带有默认XCode刷新图标的导航项“刷新”。我知道如何用下面的代码创建一个带有单词“Refresh”的。不过,我想在图标中插入“刷新”一词,感谢您的帮助

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

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

let refreshButton=UIBarButtonItem(barButtonSystemItem:.Refresh,target:self,action:#选择器(FollowVC.Refresh))


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

<

您在编码中犯的错误是

首先你

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
The button action refresh is performed
目标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 action button is refreshed
The button action refresh is performed
请参见屏幕截图中的刷新按钮

好的解决方案


即使已经问了一个很好的问题。请检查我更新的目标c和swift答案。非常感谢兄弟