コードはUnityからiOSのアクションシートを呼び出すためのネイティブ側になります。
文字列の変換はわかったのですが、アクションシートに表示する項目用のarrayの変換方法が見つかりません。
ObjectiveC
1#import "iOSAlertDialog.h" 2 3extern "C" { 4 void showActionSheet(const char *gameObjectName, const char *callbackMethodName, const char *itemArray[]) { 5 NSString *gameObject = [NSString stringWithCString:gameObjectName encoding:NSUTF8StringEncoding]; 6 NSString *method = [NSString stringWithCString:callbackMethodName encoding:NSUTF8StringEncoding]; 7 8 NSArray *items = itemArray; **←ココです** 9 10 iOSAlertDialog *alertDialog = [[iOSAlertDialog alloc] init]; 11 [alertDialog gameObject:gameObject 12 method:method 13 items:items]; 14 } 15} 16 17@implementation iOSAlertDialog 18 19- (void) gameObject:(NSString* )gameObject method:(NSString *)method items:(NSArray* )items { 20 _alertController = [UIAlertController alertControllerWithTitle:nil 21 message:nil 22 preferredStyle:UIAlertControllerStyleActionSheet]; 23 24 [items enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) { 25 [_alertController addAction:[UIAlertAction actionWithTitle:obj 26 style:UIAlertActionStyleDefault 27 handler:^(UIAlertAction * _Nonnull action) { 28 UnitySendMessage([gameObject UTF8String], [method UTF8String], [obj UTF8String]); 29 }]]; 30 }]; 31 32 [_alertController addAction:[UIAlertAction actionWithTitle:@"キャンセル" 33 style:UIAlertActionStyleCancel 34 handler:^(UIAlertAction * _Nonnull action) { 35 UnitySendMessage([gameObject UTF8String], [method UTF8String], [@"キャンセル" UTF8String]); 36 }]]; 37 UIViewController *viewController = UnityGetGLViewController(); 38 [viewController presentViewController:_alertController animated:true completion:nil]; 39} 40 41@end 42
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/09 14:44