2009-08-21 24 views
13

Tôi muốn tạo nút chuyển đổi trong ứng dụng iPhone của mình. Tuy nhiên, tôi không biết chính xác điều gì sẽ là cách tiếp cận tốt nhất cho việc này.Thực hiện nút chuyển đổi iPhone

Tôi đang xem xét hai tùy chọn.

Tôi có thể phân lớp UIButton. Bằng cách đó tôi không phải thực hiện xử lý cảm ứng. Tôi chỉ có thể tạo ra một phương thức trả về một boolean cho biết nút đó đang ở trạng thái bật hay tắt.

Tôi cũng có thể bắt đầu với lớp con UIView và tạo nó từ đầu. Tôi cho rằng nó sẽ dễ dàng hơn để làm những việc như một hoạt ảnh chuyển tiếp, nhưng tôi sẽ phải tạo ra việc xử lý cảm ứng của riêng mình.

Bạn nghĩ điều gì là tốt nhất? Hay bạn sẽ biết một cách tốt hơn? (Có thể có một chế độ xem nguồn mở/miễn phí có sẵn trên web?)

EDIT: Tôi không muốn sử dụng UISwitch vì tôi muốn nút chuyển đổi trông giống như vậy. Tôi muốn nó là một nút hình chữ nhật lớn và làm cho nền thay đổi để biểu thị trạng thái.

Cảm ơn!

Trả lời

4

Bạn có thể sử dụng UIButton và thiết lập thuộc tính enabled của nó.

Trong Trình tạo giao diện, bạn có thể đặt hình ảnh riêng biệt cho các trạng thái đã bật và vô hiệu hóa, và IBAction thay đổi thuộc tính.

+0

Đó là thông minh. Cảm ơn bạn! –

+12

Tôi đã tự hỏi tại sao bạn chọn thuộc tính 'enabled' thay vì' selected'? Sau khi đọc mẹo này một lúc, tôi đã thực hiện nó ngay hôm nay bằng cách sử dụng 'selected'. Hoạt động tuyệt vời. Sau đó, tôi đọc lại mẹo và thử 'bật'. Sau khi vô hiệu hóa, bạn không còn có thể nhấp vào nút, vì vậy nó không phải là một chuyển đổi tuyệt vời. Có một số thiết lập tôi bị mất? – slothbear

+0

Bạn đã chính xác, tôi đã đề xuất rằng trong một nhận xét về một câu trả lời khác. –

0

Không có nút chuyển đổi nào hoặc tôi đang thiếu thứ gì đó ở đây?

CHỈNH SỬA: Như những người khác đã nói, nó được gọi là UISwitch và nó bật và tắt.

+0

'UISwitch' là một cách để thực hiện chuyển đổi qua lại –

+0

Cảm ơn. Tôi không thể nhớ tên chính xác và tôi chưa cài đặt SDK iPhone trên hệ thống này. – Cinder6

0

Có thể tôi không hiểu câu hỏi đúng ..why là bạn không sử dụng UISwitch

0

Tôi cũng đã xem xét UISwitch, nhưng trong trường hợp của tôi, tôi không muốn nút bật/tắt, tôi thực sự muốn có nút chuyển đổi. Những gì tôi đang cố gắng làm, một lần nữa trong trường hợp của tôi, là có một khối nút trông giống như một UISegmentedControl, nhưng nơi người dùng có thể "chuyển đổi" nhiều hơn một trong các nút trên điều khiển cùng một lúc. Vấn đề tôi đang cố gắng giải quyết là tôi có màn hình thực sự rất hạn chế và rất nhiều chuyển đổi để có được trên màn hình.

Thời gian hoàn vốn của tôi có thể là một UITableView đầy đủ các ô chuyển đổi. Bằng cách này tôi có thể thêm nhiều chuyển đổi như tôi muốn trong một khu vực cố định, có thể cuộn của màn hình.

Đáng buồn thay, UISwitch không phải lúc nào cũng phù hợp với thông số kỹ thuật của người dùng, vì vậy tôi đoán người đàn ông đăng bài gốc không tìm kiếm nút Bật/Tắt, mà là muốn thay đổi trạng thái của nó bằng cách nào đó.

0

Tôi cũng cần làm điều này. Sẽ không thiết lập trạng thái cho phép để NO ngăn chặn các nút được bật trở lại mặc dù?

CẬP NHẬT

Mọi người đang gợi ý UISwitch nhưng điều này có thể được lột da với tất cả các tiểu bang lên, kết thúc, tàn tật, selectedUp, SelectedOver, selectedDisabled có liên quan?

+0

Vâng, vì vậy những gì tôi đã kết thúc làm là sử dụng tài sản 'đã chọn', mà - theo như tôi biết - không thực sự làm bất cứ điều gì cho UIButton's. –

+0

UIButton có hỗ trợ tất cả các trạng thái nút chuyển đổi cho skinning hay không. Hãy tha thứ cho sự thiếu hiểu biết của tôi khi tôi nhìn vào điều này như là một nhà phát triển Flex. Trong Flex a ToggleButton có các trạng thái up, over, disabled thông thường nhưng sau đó cũng đã chọnUp, selectedOver, selectedDisabled vv Bạn sẽ cần tất cả các trạng thái này để tạo một chuyển đổi thích hợp. Và có, bạn cũng cần một tài sản được chọn. Nếu điều này tồn tại trên UIButton nó sẽ đề nghị bạn có thể kích hoạt toggling. Có phải vậy không? –

+0

Không, tôi không tin là có. Nhưng những gì bạn có thể làm là ghi đè phương thức setSelected: và thay đổi kiểu dáng trong đó. –

2

Chỉ cần tạo phương thức (IBAction) và cũng là BOOL. Đặt mặc định BOOL thành FALSE. IBAction của bạn phải có dạng như sau:

- (IBAction) .... { 

    if (bool) { 
     // do your things 
    } 

    else { 
     // do your things 
    } 

    bool =! bool 
} 

Điều đó phù hợp với tôi!

+1

Điều này sẽ làm việc, nhưng nó không phải là rất -pretty-. –

13
-(IBAction)toggle{ 
    if (button.selected == NO) { 
     button.selected = YES; 

    } 
    else { 
     button.selected = NO; 
    } 
} 

hoặc

-(IBAction)toggle:(UIButton*)sender 
{ 
sender.selected = !sender.selected; 
} 

đơn giản anh chàng

+8

nếu nút 'button.selected =! Button.selected;' đơn giản nhất! : D –

+0

hmm thats tốt :) – Mashhadi

+1

Thậm chí tốt hơn: '- (IBAction) chuyển đổi: (UIButton *) người gửi { sender.selected =! Sender.selected; } ' – AlexChaffee

Các vấn đề liên quan