如何通过单击目标c中的按钮来创建与URL的交互?

时间:2011-12-05 08:55:12

标签: iphone xcode interface-builder

我正在尝试为iphone制作一个应用程序,它将tcp连接发送到指定的urf(或Web应用程序)。我希望按钮在发送之前首先给出一个转发器。我为此写了这段代码:

-(IBAction)tiklandi:(id)sender{
NSString *buton1 = [sender titleForState:UIControlStateNormal];
NSString *uyariText = [[NSString alloc] initWithFormat:@"istek gönderiliyor!"];
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Sunucuya Gönderildi" message:uyariText delegate:nil
    cancelButtonTitle:@"işlemi iptal ettiniz!"
                                    otherButtonTitles: nil];
[alert show];
//[alert release];

但我无法在代码中使用任何url方法。

我的第二个问题是,我在Developer目录中看不到我的Interface构建器,而且在Xcode的项目导航器中也看不到文件夹,所有类都在彼此之间混合。我使用Xcode 4.2,我是所有这些新手,有人可以帮忙吗?


我尝试了列出的解决方案,但我不知道如何交互我的视图控制器文件和.xib文件。 这是我的视图控制器.h文件:

@interface ViewController : UIViewController


@property (nonatomic, retain) NSURLRequest *url;
@property (nonatomic,retain) UIButton *buton;


-(IBAction)fonksiyon:(id)sender;
@end

这是我的实现文件(视图控件.. .m)

#import "ViewController.h"

@implementation ViewController

@synthesize buton;
@synthesize url;



-(IBAction)fonksiyon:(id)sender{

    NSString *buton= [sender titleForState:UIControlStateNormal];
    NSURL *url= [sender url];
    NSString *uyariText= [[NSString alloc] initWithFormat:@"gönderiliyor!"];
    UIAlertView *alertView= [[UIAlertView alloc]initWithTitle:@"Sunucuya Gönderildi" 
                                                  message:uyariText
                                                 delegate:self
                                        cancelButtonTitle:@"işlemi iptal ettiniz!" 
                                        otherButtonTitles:@"Server'a Git!", nil];

    - (NSURL)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
        if (buttonIndex != [alertView cancelButtonIndex]) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://192.168.69.290/cgi-bin/ipad.pl";nil]];
        }

    }

}

问题是我无法通过File的所有者在.xib文件和其他文件之间建立关系。据我了解,当我从文件的所有者拖动时,我应该看到我的功能(这里称为fonksiyon)。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

在创建UIAlertView并将其中一个UIAlertViewDelegate方法实现时,将委托设置为self。 当然,如果你想提供取消选项,你需要一个“otherButtonTitle”

UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Sunucuya Gönderildi" 
                                              message:uyariText
                                             delegate:self
                                    cancelButtonTitle:@"işlemi iptal ettiniz!" 
                                    otherButtonTitles:@"Go to website", nil];

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (buttonIndex != [alertView cancelButtonIndex]) {
        // open url in external safari
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://foo.bar"]];
        // EDIT: I might have misunderstood your question. 
        // you should read about NSURLConnection and put that code here.
    }
}
  

我的第二个问题是,我无法在Developer目录中看到我的Interface构建器

Interface Builder不再是额外的应用程序。它现在内置于Xcode。您无需启动它,只需在Xcode中选择xib文件即可。

  

并且在Xcode的项目导航器中我看不到文件夹,所有类都相互混合。

选择要分组的文件,进行辅助点击并选择“从选择中新建组”。 您负责对文件进行分组。如果您有现有组,只需将文件拖放到那里即可。

答案 1 :(得分:0)

  1. 您必须为UIAlert实现委托协议来处理用户的响应。然后,您就可以打开所需的网址。

  2. Interface Builder不再是单独的应用程序(因为XCode v4)>只需在XC中打开一个XIB / NIB文件。

  3. 要在Safari移动版中打开网址,请检查此问题:How can I launch Safari from an iPhone app?

  4. 如果要在应用内打开网址,则需要构建自己的UIWebView: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/