9. Segmented Control và Switch

iThanh
14/7/2013 0:58Phản hồi: 26
9. Segmented Control và Switch
Segmented Control và Switch

Chào các bạn.

Đối tượng tiếp theo mà chúng ta tìm hiểu đó là:
- Segmented Control
- Switch

Hai đối tượng này tương đối giống nhau.
- SegmentedControl: đối tượng này bao gồm nhiều Button (nút bấm) liên kết với nhau theo chiều ngang. Mỗi nút bấm có thể hiển thị chữ, hoặc hình ảnh (cái này tuỳ vào thiết kế của bạn trên ứng dụng)

- Switch: là đối tượng chỉ có 2 lựa chọn là On/Off (tắt hoặc mở) ví dụ nhủ trong Setting, bạn hay thấy nút này mỗi khi muốn bật hoặc tắt chức năng 3G (các iPhone từ 3G trở lên). Đối tượng này giống như cái công tắc điện đó bạn.

Mời các bạn xem video để hiểu rõ hơn về từng đối tượng.




Bài tập:

1. Viết ứng dụng nhập thông tin người dùng và xuất ra cửa sổ Log:
- Tên, Ngày tháng năm sinh, Quê quán, Địa chỉ, Email, Điện thoại liên lạc, Giới tính.

2. Viết ứng dụng trả lời câu hỏi. (Câu hỏi do bạn chọn lựa, mỗi câu hỏi có nhiều câu trả lời)
Ví dụ: Nước Việt Nam có bao nhiêu dân tộc anh em?
a. 50, b. 55, c. 54, d.64
26 bình luận
Chia sẻ

Xu hướng

vi_tieu_bao
ĐẠI BÀNG
11 năm
thêm bài nữa. tha hồ mò lun ^^
@vi_tieu_bao
😁 video rất dễ hiểu, k đến mức phải mò đâu. Hóng tiếp thôi, sướng cả người
vi_tieu_bao
ĐẠI BÀNG
11 năm
@allstreet trình mình gà còn trong trứng nên làm bài tập toàn phải hỏi bài iThanh thôi ^^
@vi_tieu_bao mình cũng gà, nhưng qua video thì dễ hỉu hơn rất nhìu
vi_tieu_bao
ĐẠI BÀNG
11 năm
giờ càng làm càng máu
xong bài 1
http://www.mediafire.com/?k4ccz7wj6vnp4d6
^^
vi_tieu_bao
ĐẠI BÀNG
11 năm
đi ngủ mai làm tiếp đợi bài mới keke
vi_tieu_bao
ĐẠI BÀNG
11 năm
có ảnh lun ^^

vi_tieu_bao
ĐẠI BÀNG
11 năm
@vi_tieu_bao Bạn vi_tieu_bao cho mình hỏi.
Mình có download bài làm của bạn về để học hỏi thì thấy bạn dùng switchcase như sau:
Code:
 switch (CauTraLoi.selectedSegmentIndex) {
        case 0:
            DapAn.text = [NSString stringWithFormat:@"Sai rồi, vui lòng chọn lại."];
            break;
         
        case 1:
            DapAn.text = [NSString stringWithFormat:@"Đúng rồi, chúc mừng bạn!"];
            break;
         
        case 2:
            DapAn.text = [NSString stringWithFormat:@"Sai rồi, vui lòng chọn lại."];
            break;
         
        default:
            break;
Bạn có thể cho mình hỏi 1 xíu là lợi ích của việc bạn thêm đoạn "NSString stringWithFormat: @"" vào không?
Mình chưa hiểu lắm cách dùng đoạn code đó có tác dụng gì trong trường hợp này.
Ý mình là trông có vẻ nó dài hơn nên vì sao mình phải dùng nó chứ không phải là thêm vào để có thể thêm chuỗi.

Do mình cũng làm bằng if else sau đó thấy hơi dài nên chuyển sang switchcase và mình Add như thế này.

Code:
 switch (thangCuaNam.selectedSegmentIndex) {
        case 1:
            ketQua.text=@"Bạn đã trả lời Sai";
            break;
        case 2:
            ketQua.text=@"Bạn đã trả lời Sai";
            break;
        case 3:
            ketQua.text=@"Bạn đã trả lời Dung";
            break;
        case 4:
            ketQua.text=@"Bạn đã trả lời Sai";
            break;
        default:
        case 0:
            ketQua.text=@"Bạn đã trả lời Sai";
            break;
    }
Cảm ơn bạn !
iThanh
ĐẠI BÀNG
11 năm
Bạn vi_tieu_bao nên làm bằng cách:
Mỗi khi người dùng thay đổi giá trị ở Segment thì ngay lập tức kiểm tra và xuất hiện kết quả luôn.
Bỏ luôn button, cho đỡ rườm ra.
Thử xem có được không nhé bạn.
iThanh
ĐẠI BÀNG
11 năm
Bạn learnxcodevn, 2 câu lệnh mà bạn hoặc mình sử dụng đều trả về kết quả như nhau.

Tuy nhiên việc mình dùng câu lệnh đó để tập quen cho việc sử dụng đối tượng NSString trong Objective-C, việc tập quen này rất có lợi về sau này khi khởi tạo hoặc xử lý kết quả trực tiếp thông qua các đối tượng.

Và một điều nữa, nếu như bạn dùng câu lệnh @"ABC" để chèn chuỗi ABC thì sẽ không thêm được các giá trị từ các biến khác vào chuỗi đó. Còn nếu dùng câu lệnh như mình sẽ thêm được. Ví dụ:

int Diem = 10;
NSString *Chuoi = [NSString stringWithFormat: @"Điểm: %i", Diem];
NSLog(@"%@", Chuoi);
Cảm ơn bạn Thanh đã giải thích rõ ràng và dễ hiểu.
Chào bạn Thanh và mọi người, cho mình hỏi cách nào để mà hiện thông tin của 2 ô text mình nhập vào trên cùng một label không?
Ví dụ ô text 1 nhập Tên là Trí, ô text 2 nhập Năm sinh là 1985, thì khi mình nhấn button Nhập xong thì label Thông tin sẽ hiện "Bạn tên Trí sinh năm 1985". Tại mình không muốn mỗi ô text phải làm một label để hiện thông tin cho ô text đó.
iThanh
ĐẠI BÀNG
11 năm
@nguyentri2010
NSString *Text1 = @"Cái này là";
NSString *Text2 = @"Đoạn Text 2";
NSString *Chuoi = [NSString stringWithFormat: @"%@ %@", Text1, Text2];
NSLog(@"%@", Chuoi);

Thử đoạn code trên, bạn sẽ thấy kết quả.
Đã có biến Chuoi và giá trị của nó rồi, bạn muốn gán hoặc xử lý thế nào thì tuỳ bạn.
@iThanh Cảm ơn bạn Thanh, mình sẽ thử xem thế nào. Bạn cho mình cái apple ID được không, có gì mình nhắn tin trên Messages hoặc FaceTime, trong những trường hợp cấp bách. 😃
iThanh
ĐẠI BÀNG
11 năm
@nguyentri2010
Bạn có thể ghé thăm Facebook Page: http://facebook.com/LapTrinhiOS

Hoặc iMessage và Email cho mình: ithanh@me.com
@iThanh Hôm nay ngồi vọc tới 1h sáng, nhưng có một chỗ mình muốn làm nhưng chưa làm được. Nhờ bạn Thanh chỉ giúp mình với. Vấn đề là như thế này:
- Mình tạo một Text Field để nhập tên.
- Một Segmented Control để chọn giới tính nam, nữ.
- Một Button để xác nhận.
- Một Label để hiện thị thông tin (tên và giới tính) sau khi mình bấm Button xác nhận.
Nếu mình tạo 2 Label (1 Label hiển thị tên và 1 Label hiển thị giới tính) thì OK rồi, nhưng nếu mình tạo 1 Label thì mình không thể nào cho hiện thông tin giới tính lên được.
iThanh
ĐẠI BÀNG
11 năm
@nguyentri2010 Bạn lấy thông tin giới tính như thế nào?
Có phải thông tin giới tính là một số nguyên không?
Trong bài NSString, mình có nói đến việc thêm kiểu dữ liệu khác vào String. Ở đây, đối với số nguyên, bạn dùng %i nhé!
Và muốn hiển thị trên 1 Label, bạn chỉ cần gộp 2 giá trị nhận được từ TextField và Segment lại với nhau.

NSString *Chuoi1 = [TextField_A text];
int GioiTinh = [Segment_B index_Of_Selected];
NSString *ChuoiHienThi = [NSString stringwithformat: @ "Ten: %@ - Gioi Tinh: %i", Chuoi1, GioiTinh];

Chúc bạn vui.
Cảm ơn bạn rất nhiều, mình đã thử và thành công rồi.
Đây là bài của mình các bạn tham khảo góp ý kiến nhé

htt p://ww w.mediafire.com/download/7nyv2u89ce2jkb0/Phan_9.zip

p/s: ko đủ bài post link. Các bạn bỏ khoảng trắng đi nhé
lúc ứng dụng mới chạy lên, mình viết nếu để Segmented là 0 thì Switch là OFF, nhưng sau chạy lên thì Switch vẫn hiện ON vậy 😔
good. i like it
duongancol
ĐẠI BÀNG
10 năm
sao mình dùng xcode 5 đến phần kéo thả lại không được nhỉ?
Đây là bài làm của em, các bác xem code có j sai thì chỉ bảo em với 😁

- Bài 1:

+ code file .h:
Code:
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController{
    IBOutlet UITextField *nhapHoTen;
    IBOutlet UITextField *nhapDiaChi;
    IBOutlet UITextField *nhapEmail;
    IBOutlet UISegmentedControl *nhapGioiTinh;

    IBOutlet UILabel *hoTenHT;
    IBOutlet UILabel *diaChiHT;
    IBOutlet UILabel *emailHT;
    IBOutlet UILabel *gioiTinhHT;
}

- (IBAction)submit😔id)sender;

@end
+ code file .m:
Code:
- (IBAction)submit:(id)sender {
    if (nhapHoTen.text>0||diaChiHT.text>0||nhapEmail.text>0) {
        hoTenHT.text=nhapHoTen.text;
        diaChiHT.text=nhapDiaChi.text;
        emailHT.text=nhapEmail.text;
        if (nhapGioiTinh.selectedSegmentIndex==0) {
            gioiTinhHT.text=@"Giới tính Nam.";
        } else {
            gioiTinhHT.text=@"Giới tính Nữ.";
        }
    }
   
}
Đây là bài thứ 2 của em:


- Code file .h:
Code:
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController{

    IBOutlet UISegmentedControl *luaChon;
    IBOutlet UILabel *ketQua;
}

- (IBAction)luaChonAc😔id)sender;

@end

- Code file .m :
Code:
- (IBAction)luaChonAc:(id)sender {
    if (luaChon.selectedSegmentIndex==3) {
        ketQua.text=@"Bạn đã trả lời đúng cmnr !";
    } else {
        ketQua.text=@"Bạn đã trả lời sai cmnr !";
    }

}
tớ dùng xcode 5.1.1, cái phần segment ấy, muốn cho nó non select thì làm ntn nhỉ mọi người? thử tìm mà không thấy? tức ban đầu khi chạy là nó không mặc định chọn nam hay nữ bình thường là nó sẽ mặc định chọn segment đầu tiền.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019