1

今日の拡張機能を使用しています

テーブルビューの今日の通知にイベントのリストを表示しました。

選択した行イベントをクリックしながら、appdelegate メソッドで送信したい

行の選択をクリックすると、アプリ内を移動してopenurlメソッドを呼び出しますが、このメソッドまたは選択した行番号で選択したイベントを取得できません。

今日の拡張機能からアプリへのデータを取得できますか

今日のviewcorollerの私の現在のコードは

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
      NSLog(@"%s",__PRETTY_FUNCTION__);
     [self.extensionContext openURL:[NSURL URLWithString:@"TestIt://"]
             completionHandler:^(BOOL success) {
     }];
}

イベントをクリックすると、行番号が appdelegate メソッド (openurl) に送信されます。

助けを求める

4

2 に答える 2

0

URL に重要なデータが含まれていることを確認する限り、URL を使用してこれを行うことができます。たとえば、コードを次のように変更できます。

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"TestIt://%d", indexPath.row];
[self.extensionContext openURL:url] completionHandler:nil];

URL には、ユーザーがタップした行のインデックスが含まれるようになりました。

次に、アプリがその URL に応答することを確認します (ターゲット設定で行います)。アプリ デリゲートでその URL を受け取ります。次のようにします。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSString *tableIndexRow = [url resourceSpecifier];

    // tableIndexRow is a string that contains the tapped row number

    // Do something to handle the tap

    return YES;
}

このようにして、アプリはユーザーがタップした行を認識し、アプリにとって意味のある方法で応答できます。これを示すプロジェクトが Githubにあります。

別のデータを渡す必要がある場合は、必要なものをすべて URL に含め、アプリのデリゲートを変更してそのデータを処理します。

于 2015-02-26T17:44:12.177 に答える