2012-12-09 81 views
0

我想製作一個隨機文本生成器,我知道如何做一個正常的,但在這種情況下,我不能得到它的工作。所以我選擇了一個圖片的代碼,然後將它顯示在不同的視圖控制器上,並且我希望每次拍攝圖片時都將該最後一個視圖控制器上的標籤設置爲隨機語句。我不知道如果我解釋自己的權利.. 這是我的代碼:隨機文本生成器 - iOS

//ViewController.m 

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
     if([segue.identifier isEqualToString:@"CameraSegue"] || [segue.identifier isEqualToString:@"LibrarySegue"]) 
     { 

      UIImagePickerController *controller = [segue destinationViewController]; 
      controller.sourceType = [segue.identifier isEqualToString:@"LibrarySegue"] ? UIImagePickerControllerSourceTypePhotoLibrary : UIImagePickerControllerSourceTypeCamera; 
      controller.delegate = self; 


     } 
     else if([segue.identifier isEqualToString:@"ShowImageViewController"]){ 

      UIImage *image = (UIImage*)sender; 
      ShowImageViewController *viewController = segue.destinationViewController; 
      viewController.pickedImage = image; 

      UILabel *label = (UILabel *) sender; 
      ShowImageViewController *vc = segue.destinationViewController; 
      vc.cap = label; 
      //I tried to set the label here 
      label.text = @"Hello"; 

     } 
    } 

    -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 

    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
     UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
     [self dismissViewControllerAnimated:YES completion:^{ 
      picker.delegate = nil; 
      [self performSegueWithIdentifier:@"ShowImageViewController" sender:image]; 
     }]; 
    } 

//SeconViewController.h 
@property(nonatomic, strong) UIImage *pickedImage; 
@property (weak, nonatomic) IBOutlet UIImageView *pickedImageView; 
@property(nonatomic, retain) IBOutlet UILabel *cap; 

//SecondViewController.m 

-(void)viewWillAppear:(BOOL)animated{ 
    self.pickedImageView.image = self.pickedImage; 
} 
+0

我嘗試了設置標籤的文本時的圖片採用label.text = @「hello」;在prepareforsegue方法中,但我得到了一個SIGABRT錯誤。我知道我必須使用arc4random,但我不知道如何在這裏使用它。 – emiliomarin

+0

您可以在上面編輯您的代碼以顯示如何設置標籤的文字嗎?我的猜測是a)'sender'到達時不是標籤,或者b)您使用一些時髦的語法設置其文本。 –

+0

我剛剛更新了它 – emiliomarin

回答

0

你可以用這個去。這是一個c函數,但您可以在objective-c中使用它,或者將其轉換。

void generateRandomString() { 

     int numRandChars = 15; 
     for (int i = 0; i < numRandChars; i++) { 

      int intChar = arc4random()%126; 

      // Limit to above 33+ 
      while (intChar < 33) { intChar = arc4random()%126; } 

      // Use ascii table to convert 
      char aChar = (char)toascii(intChar); 

      // Print or do whatever you want with the string 
      printf("\n%d = %c",intChar, aChar); 
     } 
} 

此外,如果你仍然有問題,設置標籤的一切,你需要弄清楚什麼是「發件人」實際上是,即要確保它不是零,它實際上是一個UILabel爲你的期望。

希望有所幫助。

+0

謝謝,但我真的不知道那麼多C.所以我真的不知道如何轉換它。但我知道如何做隨機生成器,我不知道的是每次我選擇一張圖片時都用prepareforsegue方法來生成一個標籤 – emiliomarin

+1

''arc4random()%'推薦'arc4random_uniform(u_int32_t upper_bound) 126'結構。 [文檔](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man3/arc4random_uniform.3.html) –

+0

@ Paul.s感謝的人。我以前從未見過。 –

0

在SWIFT,您可以使用它來得到一個輔音和元音,只是把它放在一個循環,並創建你的話,希望它有助於

func getConsonant() { 
    var consonant:NSString = "QWRTYPSDFGHJKLZXCVBNM" 
    var selected = Character(UnicodeScalar(consonant.characterAtIndex(Int(arc4random_uniform(20))))) 
    println("This is a consonant \(selected)") 
} 

func getVowel() { 
    var vowel:NSString = "AEIOU" 
    var selected = Character(UnicodeScalar(vowel.characterAtIndex(Int(arc4random_uniform(4))))) 
    println("This is a vowel \(selected)") 
}