2014-09-18 1 views
0

UITableView 셀에는 JSON이 채워집니다. 내 키 값 중 하나는 'ID'이며 내 UIActivityViewController에 URL을 작성하는 데 필요합니다.UIActivityViewController (Swift)에서 VC의 셀 종속 변수를 가져옵니다.

나는 didSelectRowAtIndexPath을 사용하고 있지 않지만 대신 각 셀에 UIButton이있어 ActivityViewController을 활성화합니다. 어떻게하면 셀의 공유 버튼이 선택되었는지 감지하고 해당 셀의 "ID"를 ActivityViewController으로 보내 URL에 추가 할 수 있습니까?

이것은 내 VC의 문자열로서 "ID"로 채워질 준비가되었습니다.

var passID: String = "" 

이 내 IBActionUIActivityViewController 설정입니다. 내 "secondActivityItem"은 URL이며 단순히 셀의 "ID"에 따라 다릅니다.

@IBAction func shareSheet(sender: AnyObject){ 

let firstActivityItem = "Help us meet a need this Christmas season! Can you meet this need?" 
let secondActivityItem : NSURL = NSURL.URLWithString("http://www.domain.com/\(passID)") 
let activityViewController : UIActivityViewController = UIActivityViewController(
    activityItems: [firstActivityItem, secondActivityItem], applicationActivities: nil) 

activityViewController.completionWithItemsHandler = {(activityType, completed:Bool, returnedItems:Array!, error:NSError!) in 

    if !completed { 
     println("cancelled") 
     return 
    } 
    if activityType == UIActivityTypePostToTwitter { 
     println("twitter") 
    } 
    if activityType == UIActivityTypeMail { 
     println("mail") 
    } 
} 

    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

이것은 내 cellForRowAtIndexPath입니다.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

var cell:CustomCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as CustomCell 

//Assign JSON keys to variables 
var rowData: NSDictionary = dataArray[indexPath.row] as NSDictionary 
var firstName=rowData["needFirstname"] as String 
var descrip=rowData["needDescription"] as String 
var city=rowData["needCity"] as String 
var state=rowData["needState"] as String 
var country=rowData["needCountry"] as String 
var needID=rowData["id"] as String 

return cell 
} 
+0

어떤 이유로 당신 돈 didSelectCellAtIndexPath를 사용하고 싶지 않으십니까? 그렇지 않으면 단추의 부모보기를 사용하여 셀에 대한 참조를 가져온 다음 tableView의 indexPathForCell 메서드를 호출합니다. –

+0

디자인 용도로는 이렇게해야합니다. 세그 (segues)를 수행하는 각 셀에는 두 개의 사용자 정의 UIButton (하나가 됨)이 있습니다. 당신이 언급 한 것에 기초하여 대답을 던지는 마음? – davidrayowens

+0

불행히도, 나는 현재 모바일이며 코드를 효과적으로 작성할 수 없습니다. 죄송합니다. –

답변

0

일부는 Joshua Sullivan의 의견에 비유되어 있습니다. 그러나 CustomTVCellIBOutlet과 함께 tags도 사용했습니다. 에

추가 된이 내 JSON :

cell.shareButton.tag = indexPath.row 

shareSheet 기능이 추가 :

var cell:CustomCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as CustomCell 

    if let sharebutton = sender as? UIButton { 
     let rowData: NSDictionary = dataArray[sharebutton.tag] as NSDictionary 
     cell.passedID = rowData["id"] as String 
    } 

이 내 CustomTVCell.swift 파일 :

var passedID:String = "" 
    @IBOutlet var shareButton:UIButton!