2016년 3월 29일 화요일

[ios][swift] UIActivityViewController에서 자신의 ShareExtension이 표시 되지 않게 하고 싶다...

앱 내부에서 외부로 공유를 위해 UIActivityViewController를 써 보았다.
사용은 뭐 쉽다.
배열로 공유할 오브젝트들을 나열하면 알아서 공유를 해준다.
문제는 앱에서 ShareExtension을 제공하는데,
앱내에서 공유를 하려면 이 ShareExtension도 표시가 되서 보기가 않좋다.
뭐 경우에 따라서는 같은 앱으로 공유 하는것이니 쓸모가 있을 수도 있겠지만..
아무튼, SDK에 따르면 원하지 않는 Activity타입은 제외 할 수 있다고 하는데,
이것이 동작 하지 않는데.
근데 페이스북의 경우는 잘된다...
왠지 커스텀의 경우만 잘 안되던가 내가 잘못했던가 인 듯 한데.
도통 이유를 모르겠다.
StackOverFlow에도 질의를 해둔 상태인데 답이 올런지...
http://stackoverflow.com/q/36281743/2575254

아래는 나의 테스트 코드 :

let activityItems = [shareUrl]
    let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
    activityViewController.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
    activityViewController.excludedActivityTypes = ["com.mytest.ShareExtension"];

    activityViewController.completionHandler = { (activityType: String?, completed: Bool) -> Void in
        print(activityType) // printed "com.mytest.ShareExtension"
    }

    vc.presentViewController(activityViewController, animated: true, completion: nil);


[Swift] Objective-C와의 차이 정리중...

뭐 일단 문법부터 다르지만 ㅋ

- 스위프트에서 만든 모듈을 OBJC에서 사용
#import "[header-name]-Swift.h"

- 반대로 스위프트에서 OBJC 모듈 사용
"[header-name]-Bridging-Header.h" 파일에 추가 해주면 됨

- 변수선언
var a : String

- 상수선언
let b : String = "String"

- 정적 배열선언
var cityRow = ["string1", "string2", "string3", "string4"]

- 상수값 사용
UIModalTransitionStyleCoverVertical
UIModalTransitionStyle.CoverVertical

- 블록 -> 클로저
{ (매개변수) -> 반환타입 in
    실행구문
}
Ex)
{ (arg1: Int, arg2: Int) -> Bool in
    print("Test")
    return true
}

- CGFloat값을 Float으로 변환
let someFloat = Float(cgFloat)

- String 길이
aString.characters.count

- @NSManaged ??
@dynamic 과 비슷하나 런타임에서 Core Data로 처리됨을 의미