UIViewController 中的 UIButton 而不是 UITableView 的问题

Posted

技术标签:

【中文标题】UIViewController 中的 UIButton 而不是 UITableView 的问题【英文标题】:Issue with UIButton in UIViewController instead of UITableView 【发布时间】:2014-01-08 23:41:22 【问题描述】:

我正在为我的 UIView 中的特定按钮使用以下代码。请记住,此代码在 UITableView 中完美运行,但在 UIViewController 中似乎不适用于我。当我按下按钮时它只是挂起

 UIButton *buyButton = [[UIButton alloc] initWithFrame:CGRectMake(-1, 370, 320, 60)];
        UIImage *btnImage = [UIImage imageNamed:@"upgrade-new.png"];
        [buyButton setImage:btnImage forState:UIControlStateNormal];
        [buyButton.titleLabel setFont:[UIFont boldSystemFontOfSize:13.0]];
        [buyButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [buyButton.titleLabel setShadowColor:[UIColor colorWithWhite:0.1 alpha:1.0]];
        [buyButton.titleLabel setShadowOffset:CGSizeMake(0, -1)];
        [buyButton addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
        buyButton.tag = 0;
        [[self view] addSubview:buyButton];

按钮方法

- (void)buyButtonTapped:(id)sender 

    UIButton *buyButton = (UIButton *)sender;
    SKProduct *product = [_products objectAtIndex:buyButton.tag];

    NSLog(@"Buying %@...", product.productIdentifier);
    [[RageIAPHelper sharedInstance] buyProduct:product];


我很感激这方面的一些指导!

【问题讨论】:

你的目标方法被调用了吗? 是的,通过共享实例调用 这里的代码看起来不错,假设它周围的所有代码都很好。您的代码是否适用于 buyButtonTapped 函数?产品是否真的包含对象? 我的意思是你所说的“悬挂”是什么意思。当您单击它时,您会看到“正在购买...”的打印输出还是什么也没发生 我看到这个打印输出 2014-01-08 23:47:47.805 MyApp[2236:60b] Buying (null)... 【参考方案1】:

看起来有更多人在寻找与您相同的问题。看看这个帖子,问题和你的一样。

https://***.com/a/14175601/1141395

对我来说,这似乎行不通,因为您必须收到已添加到 ITunesConnect 的可用产品。您可以按UIButton 启动流程,但产品应按照delegate 方法在内部接收:

-(void)productsRequest:(SKProductsRequest *)request 
    didReceiveResponse:(SKProductsResponse *)response

【讨论】:

【参考方案2】:

它之前工作的原因很可能是因为您在拥有 tableViews 时很好地处理了 _products 数组。

现在您已经改变了这一点,当您尝试在 UIViewController 中实现按钮时,您的 _products 数组可能出现问题

它挂起是因为应用程序崩溃或因为您的 RageIAPHelper 实例不期望空对象。

我建议您跟踪您的 products 数组发生的情况并进行一些调试以找出返回 null 的原因。只需确保您的 _products 数组被正确填充,确保对象在数组内,可能通过打印它以仔细检查它的所有内容,很快您就会确切地知道为什么您的 _products 数组是空的

【讨论】:

以上是关于UIViewController 中的 UIButton 而不是 UITableView 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 从 NavigationController 中的 UIViewController 转到 TabBarController 中的 UIViewController

UIViewController 中的 UITableView - 将单元格连接到 UIViewController

UIViewControllers 中的 UIViewController

如何从创建的 UIViewController 中的另一个 UIViewController 执行功能

故事板中的 UIViewController 容器

从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller