ios - 将信息从 View Controller 发送到另一个 View Controller

标签 ios uibutton uiimage segue viewcontroller

问题是,我在 View Controller (ViewController)上有9个按钮,并且我有一个 socket 集合用于存储所有这些按钮 socket 。

然后我有一个操作方法来处理这些按钮的点击事件。

我想要的是发送单击按钮的按钮图像背景(作为 UIImage * img),segue 到另一个 View Controller (vc2),

这是我的代码:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardBtns;


- (IBAction)cardAction:(id)sender;

@end




#import "ViewController.h"
#import "ResultViewController.h"

@interface ViewController ()
@property(strong,nonatomic)UIImage *image;
@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (IBAction)cardAction:(id)sender {
for(UIButton *cardButton in self.cardBtns){
    self.image = [cardButton currentBackgroundImage];
}
[self performSegueWithIdentifier:@"cardSegue" sender:self.image];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//UIImage * img = [UIImage imageNamed:@"f1"];
UIImage * img = (UIImage *)sender;

ResultViewController *viewcontroller = [segue destinationViewController];
viewcontroller.img = img;
}

@end

在vc2中,我这里有另一个按钮,我希望用刚从vc1 segue发送的img来绘制这个按钮背景img。

@interface ResultViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *cardBtn;
@property(strong,nonatomic)UIImage *img;

- (IBAction)cardDismiss:(id)sender;

@end



#import "ResultViewController.h"

@interface ResultViewController ()

@end

@implementation ResultViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
[self.cardBtn setImage:self.img forState:UIControlStateNormal];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}


- (IBAction)cardDismiss:(id)sender {
[self dismissViewControllerAnimated:NO completion:nil];
}
@end

假设我的按钮是 1,2,3,4,5,6,7,8,9

目前,无论我在 vc1 中单击什么按钮,它在 vc2 中始终显示为“6”... 有什么建议么?谢谢

最佳答案

问题是这样的:

- (IBAction)cardAction:(id)sender {
for(UIButton *cardButton in self.cardBtns){
    self.image = [cardButton currentBackgroundImage];
}
[self performSegueWithIdentifier:@"cardSegue" sender:self.image];
}

这会将 self.image 设置为 self.cardBtns 中的最后一项。您想将 self.image 设置为 sender.currentBackgroundImage (并将参数类型中的 id 更改为 UIButton *),然后消除循环。

关于ios - 将信息从 View Controller 发送到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15298591/

相关文章:

ios - UIButton 从四面八方填充图像

iPhone/Xcode : UIImage and UIImageView won't get with the program

ios - 使 UIImageView 及其 UIImage 按比例缩放而无需额外填充

ios - 调用 imageWithData :UIImageJPEGRepresentation() multiple times only compresses image the first time

ios - xcode 6 中的 iTunes 存储操作失败

iphone - 是否兼容使用 iOS SDK 6.0 为 iOS 5.1 开发应用程序

ios - 从另一个同类对象数组中减去一个复杂对象数组 ios

ios - 测试时 Xamarin iOS UIButton 图像未显示在设备上

ios - 过渡前暂停场景并执行过渡

ios - 从 segue 返回后,UIButton 中心移回默认位置