- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以我在类外创建了一个自定义 UIBarButtonItem 并设置了它的属性。 我用一个单独的方法将它添加到导航 Controller 中,该方法从 viewDidLoad() 调用。按钮的目标是在类本身内部声明的。我什至尝试在目标方法中添加一个断点以确保它有效,但事实证明按钮没有到达目标并且尽管有断点但仍然点击。我以编程方式编写了所有代码。
我在 stackoverflow 上尝试了这个问题的答案,但没有成功。
当我在 viewDidLoad 中声明按钮时,目标确实识别了按钮并且按钮也没有显示。
提前致谢,下面是相同的代码
// inside class but outside viewDidLoad
let volumeButton = UIBarButtonItem(image: UIImage(named: "speaker"), style: UIBarButtonItem.Style.plain , target: self, action: #selector(volumeButtonTapped(_ :)))
//// inside a custom method which is called from viewDidLoad()
self.navigationItem.leftBarButtonItem = volumeButton
//// below is the target declared inside the class
@objc func volumeButtonTapped(_ sender: Any) {
if volume=="loud"{
volume = "mute"
volumeButton.image = UIImage(named: "mute")
print("volume set to mute")
//UserDefaults.standard.set(volume, forKey: "mute")
}
if volume == "mute"{
volume = "loud"
volumeButton.image = UIImage(named: "speaker")
print("volume set to loud")
//UserDefaults.standard.set(volume, forKey: "speaker")
}
}
最佳答案
当您像您一样初始化 volumeButton
时,目标 (self
) 仍然是 nil
。将按钮设为 lazy var
:
lazy var volumeButton = UIBarButtonItem(image: UIImage(named: "speaker"), style: .plain , target: self, action: #selector(volumeButtonTapped))
正如@Robert Dresler 所述,您还必须将 volumeButtonTapped
函数中的第二个 if
语句替换为 else if
以生成您的代码工作——尽管这与目标 Action 问题无关。
您还可以通过使用与此类似的解决方案使您的代码更简洁:
var deviceIsMuted = false {
didSet {
volumeButton.image = UIImage(named: deviceIsMuted ? "mute" : "speaker")
print("volume set to", deviceIsMuted ? "mute" : "loud")
}
}
@objc func volumeButtonTapped(_ sender: Any) {
deviceIsMuted = !deviceIsMuted
}
关于ios - swift | UIBarButton 不工作/不去行动目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54475046/
我正在尝试将 UIBarButtonItems 添加到导航栏,如下所示。效果很好。但最后一个按钮项目显得非常小,并且不会自动设置尺寸。 这是我添加按钮的方法,在 iOS 13 之前它运行良好。 var
嗨 我在导航栏上将 UIBarButton 显示为后退按钮,如何才能获得 UIButton 的默认后退按钮样式。 问候萨姆。 最佳答案 在父 View Controller 中,当在 didselec
您好,我创建了一个栏按钮,当开始编辑 TextView 时,该按钮显示“完成”。实际上我需要什么,当我按下完成按钮时,textview 的可编辑属性将变为 false 并且完成按钮隐藏。 我已经完成了
如何创建一个按下时会改变颜色的自定义 UIBarButton?现在使用普通样式,它只是突出显示,但为了获得更大胆的效果,我希望它改变颜色。我可以使用任何现有的解决方案吗? 最佳答案 我假设您在这里提到
这可能是一个简单的答案,但我是新手……导航栏中的后退按钮很困惑,不想返回主菜单。相反,它会返回到先前的 View 。如何在我的应用程序中指定“后退”按钮应始终转到特定 View ? 最佳答案 您所要做
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
目前,当我使用几个自定义方法来更改按钮图像的位置以将其移动到文本右侧并添加一些填充时,我正在实现一些自定义 UIBarButtonItem。但是,当我离开屏幕并返回时,按钮文本和图像会发生切换和扭曲,
我有一个UIViewController允许用户通过 UIImagePickerController 选择照片或视频。一旦他们选择其中之一,图像就会被分配给名为 var selectedImage 的
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemD
我在我的 View 中创建了一个导航栏,它应该左右各有 2 个按钮。问题是无论我做什么它都不会显示按钮/ View 。我该怎么做?这是到目前为止我的代码。 override func viewDidL
我需要知道 UIBarButtons 的 Y 和 X 位置,最好是它的宽度和高度。 我试过这个解决方案:UIBarButtonItem: How can I find its frame?但它对我不起
我正在学习 Objective-C,我正在尝试以编程方式添加 UIBarButtonItem。我在 viewDidLoad 中这样做: self.navigationItem.rightBarButt
我遇到了一个问题:我在我的 UiNavigation Controller 中以编程方式创建了一个 UIBarButton。但是,我希望它在按下时发出警报。但是,当我使用带有自定义文本的自定义栏按钮时
我有一组条形按钮,我通常使用类似这样的设置: NSArray *leftButtonArray = [[NSArray alloc]initWithObjects: backBarButton, s
目前我有一个导航栏,上面有一个栏按钮,它是在我的 Storyboard中创建的: 我想去掉栏按钮的白色部分,只保留图像。他们是这样做的方法吗? 当我尝试这段代码时,没有栏按钮: UIButton *b
我知道还有其他类似的问题,但到目前为止我还没有得到有效的答案,所以这就是我写这篇文章的原因。 我现在有以下代码来放置 leftBarButtonItem: let user = FIRAuth.
@IBOutlet weak var playStopButton: UIBarButtonItem! var playStopArray = [UIBarButtonSystemItem.Pause
由于UIBarButton 不是继承自UIResponder/UIControl,UIBarButton 上的点击事件是如何工作的? 最佳答案 Just create the UIBarButtonI
我的目标是以编程方式更改 UIBarButton(我用作 IBOutlet)的图像。 我在 stackoverflow 上找到了这个解决方案 change-image-of-uibutton-with
我正在后台线程上解压缩文件,并且正在主线程上调用 HomeViewController。在这个 View Controller 中,我在 UINavigationBar 上有一个 UIBarButto
我是一名优秀的程序员,十分优秀!