2012-01-14 35 views
5

Tôi có một ứng dụng có hai bộ điều khiển xem Viewcontroller và OptionsViewController. Viewcontroller là viewcontroller ban đầu sau đó nếu tôi nhấp vào một nút, tôi có một phương thức phân biệt để optionsviewcontroller. Có trong optionsviewcontroller Tôi có tôi UISegmented viewcontroller tạo ra từ storyboard được liên kết với một ổ cắm (UnitsSegmentedControl) và tôi muốn để có thể nói cho các phân khúc kiểm soát phân khúc nên được lựa chọn theo mặc định khi OptionsViewController tải. Trong ViewController của tôi, tôi đã viết một phương pháp:thiết lập phân đoạn mặc định trong UISegmentedControl

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
OptionsViewController *ovc=[segue destinationViewController]; 
ovc.delegate=self; 
[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1]; 

điều là khi OptionsViewController tải quan điểm chỉ số được lựa chọn là 0 như theo mặc định. Tôi không nhận được bất kỳ thông báo lỗi hoặc một cái gì đó. Tôi đang sử dụng Xcode 4.2. Tôi nghĩ rằng nó có thể là một số tùy chọn tôi có thể thay đổi trong storyboard để làm cho UISegmentedControl để có thể thiết lập mặc định được lựa chọn chỉ mục. Tôi không biết những gì khác có thể gây ra điều đó. Cảm ơn bạn

EDIT: tôi đã tìm ra rằng nếu tôi viết:

[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1]; 

bên OptionsViewController phương pháp viewDidLoad tất cả mọi thứ hoạt động tốt. Tại sao tôi không thể làm điều đó từ việc chuẩn bị cho phương pháp segue?

Trả lời

4

Điều khiển phân đoạn không tồn tại cho đến khi tùy chọn OptionsViewController được tải, đó là lý do tại sao bạn không thể đặt phân đoạn đã chọn trong phương thức PrepareForSegue của bạn ViewController. Xem lại Tham chiếu lớp UISegmentedControl cho thấy không có cách nào để đặt trạng thái mặc định:

"Giá trị mặc định là UISegmentedControlNoSegment (không phân đoạn được chọn) cho đến khi người dùng chạm vào một phân đoạn. Khi người dùng chạm vào một phân đoạn để thay đổi lựa chọn, sự kiện điều khiển UIControlEventValueChanged được tạo ra, nếu điều khiển phân đoạn được thiết lập để đáp ứng với sự kiện điều khiển này, nó sẽ gửi một hành động cho mục tiêu của nó. "

Đặt giá trị đã chọnChỉ thị trong phương thức viewDidLoad của OptionsViewController là cách chính xác để đặt giá trị mặc định cho bộ điều khiển chế độ xem.

+0

Tôi tìm thấy một con đường xung quanh vấn đề này bằng cách tạo một thuộc tính trong OptionsViewController gọi là chỉ mục và thiết lập nó thành số phân đoạn mà tôi muốn được chọn trực tiếp từ phương thức preparforsegue và sau đó gán nó cho segmentviewcontrol trong khung nhìn đã tải. Cảm ơn sự giúp đỡ của bạn – Mppl

3

Chỉ cần sử dụng mã này nếu bạn muốn làm điều đó theo chương trình

segmentControl.selectedSegmentIndex=-1; 

Nếu bạn muốn thiết lập nó từ ngòi sau đó trong xây dựng giao diện chỉ cần bỏ chọn thuộc tính được chọn chỉ số

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