คุณเปลี่ยนข้อความของปุ่มและปิดใช้งานปุ่มใน iOS ได้อย่างไร?
คุณเปลี่ยนข้อความของปุ่มและปิดใช้งานปุ่มใน iOS ได้อย่างไร?
คำตอบ:
สวัสดีนามรัฐหากคุณกำลังถามเกี่ยวกับการเปลี่ยนข้อความและสถานะเปิด / ปิดการใช้งานของ UIButton สามารถทำได้อย่างง่ายดายดังนี้
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
หากคุณได้สร้างปุ่มในตัวสร้างส่วนต่อประสานและต้องการเข้าถึงด้วยรหัสคุณสามารถใช้ประโยชน์จากข้อเท็จจริงที่ว่าปุ่มเหล่านี้ถูกส่งผ่านเป็นอาร์กิวเมนต์ในการIBAction
เรียก:
- (IBAction) triggerActionWithSender: (id) sender;
สิ่งนี้สามารถผูกไว้กับปุ่มและคุณจะได้รับปุ่มในsender
อาร์กิวเมนต์เมื่อการกระทำถูกทริกเกอร์ หากยังไม่เพียงพอ (เนื่องจากคุณต้องการเข้าถึงปุ่มอื่นที่ไม่ใช่ในการดำเนินการ) ให้ประกาศเต้าเสียบสำหรับปุ่ม:
@property(retain) IBOutlet UIButton *someButton;
จากนั้นเป็นไปได้ที่จะผูกปุ่มใน IB เข้ากับคอนโทรลเลอร์โค้ดการโหลด NIB จะตั้งค่าคุณสมบัติเมื่อโหลดอินเทอร์เฟซ
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
ใช้UIControlStateNormal
เพื่อตั้งชื่อเรื่องของคุณ
มีสองสถานะที่ UIbuttons มีให้คุณสามารถดูได้:
[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];
หากใครที่กำลังมองหาวิธีแก้ปัญหาใน Swift มาที่นี่ก็จะเป็น:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
เอกสารอ้างอิง: isEnabled , setTitle
รหัสเก่า:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
สมมติว่าปุ่มคือUIButton
:
UIButton *button = …;
[button setEnabled:NO]; // disables
[button setTitle:@"Foo" forState:UIControlStateNormal]; // sets text
ดูเอกสารสำหรับUIButton
.
ในการเปลี่ยนชื่อปุ่ม:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
สำหรับปิดการใช้งาน:
[mybtn setEnabled:NO];
ใน Swift 3 คุณสามารถเปลี่ยนชื่อปุ่มได้โดย:
button.setTitle("Title", for: .normal)
และคุณปิดการใช้งานปุ่มโดย:
button.isEnabled = false
.normal
เหมือนกับUIControlState.normal
เนื่องจากประเภทถูกอนุมาน
SWIFT 4 พร้อมส่วนขยาย
ชุด:
// set button label for all states
extension UIButton {
public func setAllStatesTitle(_ newTitle: String){
self.setTitle(newTitle, for: .normal)
self.setTitle(newTitle, for: .selected)
self.setTitle(newTitle, for: .disabled)
}
}
และใช้:
yourBtn.setAllStatesTitle("btn title")
หากคุณต้องการเปลี่ยนชื่อเป็นการตอบสนองต่อการถูกแตะคุณสามารถลองใช้วิธีนี้ภายในวิธี IBAction ของปุ่มในตัวแทนผู้ควบคุมมุมมองของคุณ การทำเช่นนี้เป็นการสลับเปิดและปิดการแชทด้วยเสียง ที่นี่ไม่ครอบคลุมการตั้งค่าการแชทด้วยเสียง!
- (IBAction)startChat:(id)sender {
UIButton *chatButton = (UIButton*)sender;
if (!voiceChat.active) {
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
message:@"Voice Chat will become live. Please be careful with feedback if your friend is nearby."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
[voiceChat start];
voiceChat.active = YES;
[chatButton setTitle:@"Stop Chat" forState:UIControlStateNormal];
}
else {
[voiceChat stop];
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
message:@"Voice Chat is closed"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
voiceChat.active = NO;
[chatButton setTitle:@"Chat" forState:UIControlStateNormal];
}
}
แน่นอนว่า voiceChat นั้นเฉพาะสำหรับการแชทด้วยเสียง แต่คุณสามารถใช้คุณสมบัติบูลีนในเครื่องของคุณเพื่อควบคุมสวิตช์ได้