UIImage和UIImagePicker以及UIImageView

时间:2010-08-06 14:45:45

标签: iphone uiimageview uiimagepickercontroller

我有一个UISegmentedControl并且我有一些照片,我最初的目标是当我点击一个特定的片段时,一个特定的图像应该出现在视图上。

例如:如果我有四个片段和四个图像,那么在每个片段上我点击我必须看到一个图像。

在这里,我使用以下特定代码获取了NSArray并上载了所有这些图像:

NSArray * images = [NSArray arrayWithObjects:[UIImage imageNamed:@"f.ppg"], [UIImage imageNamed:@"t.ppg"....etc ], nil];

之后我想将每个特定图像附加到段索引。所以这是我写的代码。

-(IBAction) segmentActionChanged:(id)sender
{
    int segment = mSegment.selectedSegmentIndex; 
    mImageView.image=[images objectAtIndex:segment]; 
}

在编译应用程序时,我没有显示任何图像,而是突然退出。

对此有任何帮助。

2 个答案:

答案 0 :(得分:1)

回答问题1和3(我认为)。 要显示图像,您需要在某处UIImageView。一个简单的方法是创建一个这样的方法。

    //somewhere in viewDidLoad perhaps?
    //title array is an array of strings to use as the label on each section of your control
    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:titleArray];

    //this sets the segmentAction: method as the selector for your particular UISegmentedControl 
//(so when its value is changed, segmentAction: gets called)
    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

    //the segmentAction: method
    - (IBAction) segmentAction:(id)sender
    {
    //This assumes you have declared the imageView elsewhere, as well as the array and that you  
 //are using Interface Builder to create/hookup the segmentControl. Basically
        myImageView.image = [myImageArray objectAtIndex:sender.selectedSegmentIndex];
    }

一些注意事项:这并没有利用延迟加载,因为您在显示它们之前在数组中创建并保存所有图像。我建议为UISegmentedControl创建一个实例变量,这样你就可以在任何地方访问它。 免责声明:此代码不完整,并假设进行了一些初始化。

回答第二个问题:处理手机/设备相机或保存的相册时使用UIImagePickerController。它包含在文档中。

答案 1 :(得分:0)

看起来你错过了保留。