2009-03-19 35 views
13

Tôi phải thêm các nút radio trong ứng dụng iPhone của mình. Cho rằng tôi đã có hình ảnh nút radio có hình tròn. Tôi có thể thêm hình ảnh đó dưới dạng một chế độ xem phụ không? và tôi có thể thêm sự kiện touchupinside vào UIImage không?Nút radio trong ứng dụng iPhone

+0

Tôi đã thử những gì bạn đã nói, Nó hoạt động tốt. Ban đầu nút trông giống như nút tròn, nhưng thời điểm nút được nhấp, khung của nút xuất hiện (trông giống như nút hình vuông) – saikamesh

Trả lời

19

Ứng dụng iPhone không có nút radio. Cách "giống như iPhone" để thực hiện việc này là bằng cách sử dụng chế độ xem bộ chọn hoặc bằng cách có một vài hàng trong chế độ xem bảng được nhóm với phụ kiện kiểm tra trên hàng đã chọn.

Nếu vì một số lý do bạn thực sự, thực sự cảm thấy cần phải có nút radio, hãy sử dụng nút UIButton với loại nút tùy chỉnh. Đặt vòng tròn trống làm hình ảnh cho trạng thái điều khiển "bình thường" và vòng tròn đã điền làm hình ảnh cho trạng thái "đã chọn".

+0

Tôi đã thử những gì bạn nói, Nó hoạt động tốt. Ban đầu nút trông giống như một nút tròn, nhưng thời điểm nút được nhấp, khung của nút xuất hiện (trông giống như một nút hình vuông) – saikamesh

+0

Làm thế nào tôi có thể loại bỏ điều này? – saikamesh

+0

Nếu điều này là không thể làm được, tôi phải thử cái gì khác. Vì vậy, xin vui lòng cho tôi biết liệu loại bỏ hành vi này là có thể – saikamesh

0

Bạn có thể thử sử dụng lớp UIImageView vừa kết thúc tốt đẹp UIImage bên trong vùng chứa UIView. Nó hỗ trợ các sự kiện touchesBegan/Canceled mà tôi thích. Bạn cũng có thể xem xét không sử dụng với thiết lập nút radio thực như bạn đã mô tả và thay vào đó là cách tiếp cận giống iPhone hơn - ví dụ, sử dụng UITableView với các ô tương ứng với các lựa chọn radio của bạn và bật/tắt/bỏ chọn khi chạm. Xem ví dụ về TouchCells tại trang web Apple iPhone dev cho một ví dụ.

+0

Tôi đã tạo lớp nút radio bằng cách mở rộng lớp UIButton, trong lớp radiobutton của tôi, cách có thể Tôi đặt buttontype thành UIButtonTypeCustom ?. – saikamesh

+0

Tùy chỉnh là loại nút mặc định. –

+0

Hi drewh, Cuối cùng tôi đã làm những gì bạn đề nghị. Tôi đã sử dụng lớp UIImageView và chạm vào sự kiệnBegan. Nó hoạt động tốt mà không có vấn đề gì. Cảm ơn rất nhiều. Cám ơn Brent vì đã cho tôi ý tưởng. – saikamesh

1

Bạn cũng có thể tạo UIWebView, tải vào HTML có sử dụng nút radio và sau đó sử dụng phương thức đại biểu UIWebView, giám sát giá trị radio.

Đó là loại hack, nhưng trong một số trường hợp, đó chính xác là những gì được gọi.

0

Nếu bạn chỉ có tùy chọn "có" hoặc "không" thì hãy sử dụng UISwitch.

Đối với nhiều loại sử dụng mã dưới đây:

-(void)buttonPressed:(id)sender{ 

if([sender isSelectd]) 

//here change button image and set 

[sender setSelected:NO]; 

}else{ 
//here change button image and set 

[sender setSelected:YES]; 

} 

nhớ, khi bạn tạo nút đừng quên để thiết lập setSelected để NO.

5

Hãy thử UISegmentedControl. Nó hoạt động tương tự như các nút radio - trình bày một loạt các lựa chọn và cho phép người dùng chọn 1.

+0

bạn có biết cách tạo UISegmentedControl trong Titanium không? –

2
IBOutlet UIButton *checkboxButtonMale; 

IBOutlet UIButton *checkboxButtonFmale; 

    checkboxButtonFmale.tag = 3; 
    checkboxButtonMale.tag = 2; 

(IBAction)checkboxGenderChecked:(id)sender{ 


    UIButton *selectedButton = (UIButton *)sender; 
    UIButton *toggledButton; 

    if (selectedButton.tag == 2) { 
     toggledButton = checkboxButtonFmale; 
    } 
    else {  
     toggledButton = checkboxButtonMale; 
    } [toggledButton setSelected:NO]; 
    [sender setSelected:YES]; 
     } 
0

tôi đã làm một cái gì đó như thế này và nó hoạt động:

- (IBAction)tickbuttonClicked:(id)sender 
{ 

UIButton *selectedButton = sender; 
UIImage *ticked = [UIImage imageNamed:@"tickbox_yes3.png"]; 
UIImage *unticked = [UIImage imageNamed:@"tickbox_no3.png"];  

    //untick active box 
    if((activetag>-1)&&(activetag!=[sender tag])){ 
     UIButton *thisButton = (UIButton *)[self.view viewWithTag:activetag]; 
     thisButton.backgroundColor = [UIColor colorWithPatternImage:unticked]; 
    } 

//tick sender 
if ([sender tag]!=activetag) 
{ 
    selectedButton.backgroundColor = [UIColor colorWithPatternImage:ticked]; 
    activetag=[sender tag]; 
    [selectedButton setSelected:YES]; 

} 

} 
1

Bạn có thể sử dụng một loạt các UIButton s , sau đó sử dụng lớp GSRadioButtonSetController của tôi để xử lý logic (về cơ bản, đảm bảo rằng chỉ có một nút có thể được chọn). Xem README trên GitHub để sử dụng mẫu.

0

// xác định sở hữu nút

Khai báo Hình ảnh Unchaked

- (void)viewDidLoad 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateNormal]; 
    } 

Chaked ảnh.

- (IBAction)ButtonChaked:(id)sender 
{ 
    if (ButtonChaked.selected ==YES) 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateSelected]; 

    ButtonChaked.selected =NO; 

} 
else 
{ 
    [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"Chaked.png"] forState:UIControlStateNormal]; 
    ButtonChaked.selected = YES; 

} 


} 

đó là thực sự sử dụng

0

tôi vừa công bố một điều khiển Nút iOS Radio để Cocoapods pod "DLRadioButton", cho tài liệu và các ví dụ, hãy truy cập vào GitHub. Đính kèm là ảnh chụp màn hình cho điều khiển này. enter image description here