2015-01-13 17 views
7

Tôi đã tìm thấy một câu hỏi tương tự nhất với tôi tuy nhiên nó không được trả lời kỹ lưỡng. Sẽ rất tuyệt nếu có ai có thể giúp tôi. Nơi tôi tìm thấy câu hỏi tương tự là here.Nhiều Tham số/Đối số cho Hành động - Swift

Tôi hiểu rõ cách thức func test() sẽ là "test"test(object:AnyObject) sẽ là "test:". Cảm ơn this.

Vậy có 2 tham số thì sao? Có thể nhanh chóng không làm 2 đối số cho 'hành động:'?

func popoverSelectedCode (code:AnyObject, desc:AnyObject) 

tôi đã cố gắng thử nghiệm nó ra trong vài cách khác nhau dưới đây, nhưng không có kết quả:

action: "popoverSelectedCode:," 

action: "popoverSelectedCode:,:" 

action: "popoverSelectedCode: :" 

action: "popoverSelectedCode: , :" 

Am chỉ khoảng một tuần tuổi trong Swift vì vậy hãy loại.

EDITED Đây là một clip ngắn của mã

@IBAction func securityQuestButtonClicked (sender:AnyObject) 
{ 
    cellButton = sender as? UIButton; 

    var comboDescListArray = TableRoutine.loadCombobox("MobileQuestion") 

    var codeObject : NSArray = comboDescListArray[0] as NSArray; 
    var descObject : NSArray = comboDescListArray[1] as NSArray; 

    var selectionTVC = CPSelectionTVC(style:UITableViewStyle.Plain, codeArray:codeObject, descArray:descObject, target:self, action: "popoverSelectedCode::", widthForViewInPopover:650) 

    let navCtl = UINavigationController.init(rootViewController:selectionTVC) 
    popoverController = UIPopoverController.init(contentViewController:navCtl) 

    var contentHeight : CGFloat = CGFloat (UInt(selectionTVC.navigationTitleHeight) + UInt(selectionTVC.rowCount()) * UInt(selectionTVC.cellHeight)) 

    popoverController?.popoverContentSize = CGSizeMake(400.0, contentHeight) 
    popoverController?.presentPopoverFromRect(sender.bounds, inView:sender as UIView, permittedArrowDirections:UIPopoverArrowDirection.Up, animated:true) 
} 

Các popover xuất hiện tuy nhiên khi lựa chọn, nó chỉ bị treo.

+0

Bạn có nhận được câu trả lời không? tôi đang đối phó với cùng một vấn đề. Nếu vậy, bạn đã viết bộ chọn của mình với nhiều tham số như thế nào và chức năng hành động trông như thế nào. cảm ơn. –

+0

Thật không may là không. Tôi đã bận rộn với những thứ khác, nhưng tôi đã dành cả ngày hôm nay cố gắng để tìm kiếm câu trả lời mới. Đừng giữ tôi đăng nếu bạn tình cờ gặp một câu trả lời. –

Trả lời

10

Chỉ cần một ghi chú trên Swift 2.2. Bây giờ bạn có thể gõ các selector như

#selector(popoverSelectedCode(_:desc:) 
+0

Bạn chỉ cần lưu ass của tôi! Ty! – MkaysWork

+0

TY! vẫn quen với công cụ chọn mới. Chỉ trong trường hợp nó giúp bất cứ ai khác tôi đã có thể sử dụng bộ chọn để gọi một phương thức đại biểu như vậy trong Swift 2.2 'textField.delegate? .performSelector (#selector (textField (_: shouldChangeCharactersInRange: replaceString :)))' – NSGangster

1

Với hai thông số, nó trở thành action::. Một dấu hai chấm cho một đối số.

+0

Bạn có thể xây dựng hoặc có thể đưa ra một ví dụ? –

+0

Không có gì để xây dựng. Bạn đã cung cấp hàm popoverSelectedCode làm tác vụ cho một số đích. Trong nhanh chóng, bạn có thể biến nó thành một bộ chọn như thế này. "popoverSelectedCode ::". Hai dấu hai chấm nói hành động này có hai tham số.Tất cả việc kiểm tra/giải quyết này được thực hiện trong thời gian chạy bởi thời gian chạy mục tiêu-c – mustafa

+0

Tôi đã thử như bạn đã đề xuất nhưng tiếc là nó vẫn không chuyển vào chức năng hành động chút nào. –

1

Nếu hàm có hai thông số như dưới đây.

func clicked(sender:AnyObject,value:AnyObject) 
{ 
} 

Sau đó

action = "clicked::" 
+0

hi rakeshbs, yeap! Tôi đã thử nó như thể hiện trong phần chỉnh sửa của tôi. Nhưng vấn đề là, cửa sổ pop sẽ không di chuyển. Nó chỉ treo ở đó trong trạng thái được chọn. –

+0

bạn có thể đăng mã hoàn chỉnh của mình không? – rakeshbs

+0

Tôi đã dán toàn bộ chức năng như bạn yêu cầu. Tôi không thấy cần phải dán chức năng hành động vì nó không đi qua. –

0

Dưới đây là cách bạn có thể đạt được điều đó trong trường hợp của bạn:

action: "popoverSelectedCode:desc:" 
1

việc kiểm tra này mã dưới đây

func switchCard(card: Int, withCard card1: Int) { 
    print(card) 
} 
let singleTap1 = UITapGestureRecognizer(target: self, action: "switchCard:withCard:") 
+0

Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về lý do và/hoặc cách mã này trả lời câu hỏi cải thiện giá trị lâu dài của nó. – JAL

0

Đối với nhiều lý lẽ trôi qua trong phương pháp selector:

let swipeRecognizer = UISwipeGestureRecognizer.init(target: self, action: #selector(ImageViewController.handleTap(_: sender :))) 
myCell.imageViewPhoto .addGestureRecognizer(swipeRecognizer) 
1

Trong Swift 2.2 bạn có thể làm một cái gì đó như thế này.

myUISlider.addTarget(self, action:#selector(self.onSliderValChanged(_:withEvent:)), forControlEvents: .ValueChanged) 

func onSliderValChanged(slider: UISlider, withEvent event: UIEvent?) { 
    } 

Tôi hy vọng nó sẽ giúp ai đó ở ngoài đó.

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