Iphone 初始化表时传递参数

Iphone 初始化表时传递参数,iphone,uitableview,Iphone,Uitableview,好吧,我完全被难住了 这适用于CouponListViewController.m: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.couponList = [CouponDatabase database].couponList; self.title = @"Coupon List"; } - (void)viewWillAppear:(BOOL)an

好吧,我完全被难住了

这适用于CouponListViewController.m:

- (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList;
     self.title = @"Coupon List";
}
- (void)viewWillAppear:(BOOL)animated {
    CouponDetails *details = [[CouponDatabase database] couponDetails:_uniqueId];
    if (details != nil) {
        [_merchantNameLabel setText:details.merchantName];
        [_longDealLine1Label setText:details.longDealLine1];
        //....blah...blah//
    }
}
#import "CouponListViewController.h"
#import "CouponDatabase.h"
#import "CouponList.h"
#import "CouponDetailsViewController.h"

@implementation CouponListViewController
@synthesize couponList = _couponList;
@synthesize couponDetails = _couponDetails;
@synthesize selectedCategory = _selectedCategory;

 - (void)viewWillAppear:(BOOL)animated {

     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList; // <--- ERROR 1
     self.title = @"Coupon List";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [_couponList count]; //  <--- WARNINGS 1 AND 2
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.couponDetails == nil) {
        self.couponDetails = [[[CouponDetailsViewController alloc] initWithNibName:@"CouponDetailsViewController" bundle:nil] autorelease];        
    }
    CouponList *info = [_couponList objectAtIndex:indexPath.row];  // <--- WARNING 3
    NSLog(@"%@", info.uniqueId);
    _couponDetails.uniqueId = info.uniqueId;
    [self.navigationController pushViewController:_couponDetails animated:YES];
}
这在CouponDetailViewController.m中起作用:

- (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList;
     self.title = @"Coupon List";
}
- (void)viewWillAppear:(BOOL)animated {
    CouponDetails *details = [[CouponDatabase database] couponDetails:_uniqueId];
    if (details != nil) {
        [_merchantNameLabel setText:details.merchantName];
        [_longDealLine1Label setText:details.longDealLine1];
        //....blah...blah//
    }
}
#import "CouponListViewController.h"
#import "CouponDatabase.h"
#import "CouponList.h"
#import "CouponDetailsViewController.h"

@implementation CouponListViewController
@synthesize couponList = _couponList;
@synthesize couponDetails = _couponDetails;
@synthesize selectedCategory = _selectedCategory;

 - (void)viewWillAppear:(BOOL)animated {

     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList; // <--- ERROR 1
     self.title = @"Coupon List";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [_couponList count]; //  <--- WARNINGS 1 AND 2
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.couponDetails == nil) {
        self.couponDetails = [[[CouponDetailsViewController alloc] initWithNibName:@"CouponDetailsViewController" bundle:nil] autorelease];        
    }
    CouponList *info = [_couponList objectAtIndex:indexPath.row];  // <--- WARNING 3
    NSLog(@"%@", info.uniqueId);
    _couponDetails.uniqueId = info.uniqueId;
    [self.navigationController pushViewController:_couponDetails animated:YES];
}
但是,当我从这里更改CouponDatabase.h时(这适用于上述内容):

…对此(如果我在方法中手动设置“selectedCategory”的值,则此选项有效):

然后将CouponListViewController.m更改为:

1    - (void)viewWillAppear:(BOOL)animated {
2       [super viewWillAppear:animated];
3       self.couponList = [[CouponDatabase database] couponList:_selectedCategory];
4       self.title = @"Coupon List";
5    }
我在上面的第3行得到了这个错误:

warning: incompatible Objective-C types 'struct CouponList *', 
expected 'struct NSArray *' when passing argument 1 of 'setCouponList:' 
from distinct Objective-C type
问题:“self.couponlist”行的正确格式是什么,这样我就可以将一个整数传递给CouponDatabase,以便在couponlist方法中使用?

编辑:我知道couponDetails现在是一个类而不是一个数组-我只是不知道如何格式化行来初始化表数据

我希望这是有意义的-在这方面的任何帮助将非常感谢

提前谢谢

添加CouponListViewController.h:

#import <UIKit/UIKit.h>

@class CouponDetailsViewController;

@interface CouponListViewController : UITableViewController {

    NSArray *_couponList;
    CouponDetailsViewController *_couponDetails;
    int _selectedCategory;
 }

@property (nonatomic, retain) NSArray *couponList;
@property (nonatomic, retain) CouponDetailsViewController *couponDetails;
@property(nonatomic, assign) int selectedCategory;

@end
#导入
@类CouponDetailsViewController;
@接口耦合ListViewController:UITableViewController{
NSArray*_couponList;
CouponDetailsViewController*\u couponDetails;
int-选择的类别;
}
@不动产(非原子,保留)NSArray*耦合列表;
@属性(非原子,保留)CouponDetailsViewController*couponDetails;
@属性(非原子,赋值)int-selectedCategory;
@结束

尝试将您的CouponListViewController.h更改为:

#import <UIKit/UIKit.h>

@class CouponDetailsViewController;

@interface CouponListViewController : UITableViewController {

    CouponList *_couponList;
    CouponDetailsViewController *_couponDetails;
    int _selectedCategory;
 }

@property (nonatomic, retain) CouponList *couponList;
@property (nonatomic, retain) CouponDetailsViewController *couponDetails;
@property(nonatomic, assign) int selectedCategory;

@end
#导入
@类CouponDetailsViewController;
@接口耦合ListViewController:UITableViewController{
耦合列表*\u耦合列表;
CouponDetailsViewController*\u couponDetails;
int-选择的类别;
}
@属性(非原子,保留)耦合列表*耦合列表;
@属性(非原子,保留)CouponDetailsViewController*couponDetails;
@属性(非原子,赋值)int-selectedCategory;
@结束
哎呀,我把我的回复放在我自己的原始帖子里,应该放在这里:

编辑:好的,我按照Robert的建议对CouponListViewController.h进行了更改,并添加了@class CouponList如下所示:

#import <UIKit/UIKit.h>

@class CouponList;
@class CouponDetailsViewController;

@interface CouponListViewController : UITableViewController {

    CouponList *_couponList;
    CouponDetailsViewController *_couponDetails;
    int _selectedCategory;
}

@property (nonatomic, retain) CouponList *couponList;
@property (nonatomic, retain) CouponDetailsViewController *couponDetails;
@property(nonatomic, assign) int selectedCategory;

@end
#导入
@阶级政变论者;
@类CouponDetailsViewController;
@接口耦合ListViewController:UITableViewController{
耦合列表*\u耦合列表;
CouponDetailsViewController*\u couponDetails;
int-选择的类别;
}
@属性(非原子,保留)耦合列表*耦合列表;
@属性(非原子,保留)CouponDetailsViewController*couponDetails;
@属性(非原子,赋值)int-selectedCategory;
@结束
CouponListViewController中仍有错误。m:

- (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList;
     self.title = @"Coupon List";
}
- (void)viewWillAppear:(BOOL)animated {
    CouponDetails *details = [[CouponDatabase database] couponDetails:_uniqueId];
    if (details != nil) {
        [_merchantNameLabel setText:details.merchantName];
        [_longDealLine1Label setText:details.longDealLine1];
        //....blah...blah//
    }
}
#import "CouponListViewController.h"
#import "CouponDatabase.h"
#import "CouponList.h"
#import "CouponDetailsViewController.h"

@implementation CouponListViewController
@synthesize couponList = _couponList;
@synthesize couponDetails = _couponDetails;
@synthesize selectedCategory = _selectedCategory;

 - (void)viewWillAppear:(BOOL)animated {

     [super viewWillAppear:animated];
     self.couponList = [CouponDatabase database].couponList; // <--- ERROR 1
     self.title = @"Coupon List";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [_couponList count]; //  <--- WARNINGS 1 AND 2
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.couponDetails == nil) {
        self.couponDetails = [[[CouponDetailsViewController alloc] initWithNibName:@"CouponDetailsViewController" bundle:nil] autorelease];        
    }
    CouponList *info = [_couponList objectAtIndex:indexPath.row];  // <--- WARNING 3
    NSLog(@"%@", info.uniqueId);
    _couponDetails.uniqueId = info.uniqueId;
    [self.navigationController pushViewController:_couponDetails animated:YES];
}
#导入“CouponListViewController.h”
#导入“CouponDatabase.h”
#导入“CouponList.h”
#导入“CouponDetailsViewController.h”
@实现耦合ListViewController
@综合耦合列表=_耦合列表;
@合成耦合尾=_耦合尾;
@综合selectedCategory=\u selectedCategory;
-(无效)视图将显示:(BOOL)动画{
[超级视图将显示:动画];

self.couponList=[CouponDatabase database].couponList;//在您最初的CouponDatabase代码中,您正在更改定义:

- (NSArray *)couponList;
对于这一个:

- (CouponList *)couponList:(int) selectedCategory;
然而,您使用该返回值作为列表视图控制器的数据源,因此。这里有一个不匹配的问题,您应该修复。如何修复它取决于应用程序的语义。您试图用
-(CouponList*)CouponList:(int)做什么selectedCategory;
?实际返回此选择器的是什么?接口是什么
耦合列表
?您可能应该更改行:

 self.couponList = [[CouponDatabase database] couponList:_selectedCategory];

因此,它会从
CouponList
返回一个NSArray生成。但我不确定对象的语义,因此可能不是这样。

请添加“CouponListViewController.h”,问题可能是这里的成员变量声明不正确。好的,我更改了它,但现在相同的错误在那里,再加上10个…给我一点时间,我会试着看看我是否能解决它。好的,我必须添加“@class CouponList;”到CouponListViewController.h的顶部,现在我又回到了相同的错误加上3个警告。我将在上面发布详细信息。你有CouponListViewController.m文件中的#import for CouponList吗?是的,它在那里-我刚刚发布了CouponListViewController.mThanks Sergio的那部分-好的,我做了你建议的更改,它消除了错误,但3个警告仍然存在。我将尝试调查并解决它。我不确定我是否理解您的问题,但我正在尝试设置“selectedCategory”按下按钮,然后将其传递给CouponList,以便它返回基于按下的按钮的列表,并在表视图中显示。非常感谢您查看我的问题!@truthsmiles:事实上,我没有建议任何更改。我指的是不匹配。:-)您到底做了什么更改?哈哈-抱歉-我做了更改to:self.couponList=[[CouponDatabase database]couponList:_selectedCategory];我觉得这是正确的,你帮我克服了一个重大障碍-现在我只需要学习更多。顺便说一句,我正在做另一个“测试”应用程序有一个自定义按钮的UIViewController,当按下按钮时,将显示正确的tableview。我刚刚解决了这个问题,所以我需要做的就是找出如何将参数从按钮传递到tableview,我将保持良好的状态!感谢您的帮助!你们都太棒了!