0

我想使用这个空白

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:@"One point,Not good"])
{
} 

连接到 mysql 并更新名为 score 的列中的值。

例如

在开始的列中有五个点,我按下alertview按钮“一个点”

那么值列将变为六个点。

我不知道如何使用这个 void 来做到这一点,我已经搜索了很多信息,但我没有得到它

我使用json和php连接到mysql,我使用phpmyadmin。

不管我做错了,还是这个空白不能用在这个上面。

4

6 回答 6

1

首先为您的 UIAlertview 设置标签值,然后

您应该使用按钮索引值而不是其字符串文本

//我刚刚将标签值设为204

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag==204 && buttonIndex==1)
{

   //your logic

}

else if(alertView.tag==204 && buttonIndex==0)
{

   //your logic

}
}
于 2012-10-01T12:47:05.640 回答
0

您可以使用 UIAlertView 委托方法

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0)
    {
        //do something if you press the "cancel" button
    } else if (buttonIndex == 1) {
        //do other thing with other button
    }
}

对于多个 UIAlertView,您可以为每个警报视图设置标签。

您还需要为 UIAlertView 设置委托:UIAlertViewDelegate

于 2012-10-01T13:11:05.963 回答
0

方法声明开头的 (void) 只是表示该方法在代码执行后不返回任何值。另一方面,声明如下:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

表示将在方法结束时返回 NSInteger,因此您实际上可以将方法设置为等于变量,如下所示:

NSInteger number = [self numberOfSectionsInTableView:scoreTable];

对于您的问题,如果您希望通过 PHP 更新位于远程服务器上的一些 MySQL 表,您需要创建一个可以使用 NSURLConnection 将值发布到服务器上的 PHP 脚本的方法。这远远超出了我具体回答的范围,因为它真的应该分解成更小的问题。

问题 1:如何编写我的 PHP 脚本?

  1. 声明将在消息正文中的传入 $_['POST'] 变量
  2. 使 mysql_connect 连接到您的数据库
  3. 编写 SQL 语句检索要更新的记录,并更新它

问题 2:如何使用 NSURLConnection 将更新发布到网络服务器

  1. 使用处理 MySQL 更新的 .php 脚本的 URL 创建一个 NSURL 对象
  2. 创建一个 NSMutableURLRequest,给它 NSURL 并将 HTTPMethod 属性设置为 @"POST"
  3. 困难的部分是创建 bodyData,它将是与 PHP 脚本中的 $_['POST'] 变量相对应的编码标头。
  4. 创建一个 NSURLConnection 对象,将 request 属性设置为您的 NSMutableURLRequest 并设置 Delegate 以接收回调信息
  5. 启动 NSURLConnection

我认为,如果您搜索 SO,您可以找到这两个问题的答案。

祝你好运

于 2012-10-01T13:12:04.213 回答
0

你必须使用的功能是这个

- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex;

要使用此功能,您的 ViewController 必须实现UIAlertViewDelegate

在里面.h yourViewController : UIViewController <UIAlertViewDelegate>

例子

- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
    if(buttonIndex == 0)
    {
        //do something if you press the "cancel" button
    } else if (buttonIndex == 1) {
        //do other thing with other button
    }

}
于 2012-10-01T12:47:20.487 回答
0

使用按钮索引

if(buttonIndex == 1)
{
// write the logic here
return;
}
else if(buttonIndex == 2)
{
// write the logic here
return;
}
于 2012-10-01T12:42:48.917 回答
0

首先,要检查是否单击了右键,您应该使用某些头文件中定义的内容。例如:

#define CORRECT_BUTTON_TITLE @"One point,Not good"

然后,做你的检查

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:CORRECT_BUTTON_TITLE])
    {
       // UPDATE YOUR DATABASE
    }} 

这应该允许您一次轻松地修改您的名称并避免错误。

其次,如何更新你的数据库。简单地说,您必须将指令发送到位于您的服务器上的 PHP 文件,“旁边”是您的 MySQL 数据库。您的指令是通过 HTTP POST 请求发送的。在你的 php 中,

if( isset($_POST["updateScore"]) and isset($_POST["newScore"])) ){
   $newScore = intval( $_POST["newScore"] );
   // execute mysql queries
}

在 XCode 中,您可以使用 ASIHTTPRequest 发送 POST 请求。假设您的 PHP 文件位于www.example.com/update.php.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
        {
        if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:CORRECT_BUTTON_TITLE])
        {
           // UPDATE YOUR DATABASE
           NSURL *url = [NSURL URLWithString:@"www.example.com/update.php"];
           ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
           [request setPostValue:@"1" forKey:@"updateScore"];
           [request setPostValue:[NSString stringWithFormat:@"%i", 6] forKey:@"newScore"];
           [request setDelegate:self];
           [request startAsynchronous];
        }} 
于 2012-10-01T16:32:16.637 回答