0

UItableViewControllerからUitableビューセルに文字列値を渡す必要があります

これが私のテーブルビューコントローラーで使用したコードです

#import <UIKit/UIKit.h>
#import "CustomCell.h"

@interface DetViewController : UITableViewController
{
NSString *urlstring;

CustomCell *cust;

}

@property(nonatomic,retain)NSString *urlstring;
@property(nonatomic,retain)NSMutableArray *mutarray;

@property(nonatomic,retain)CustomCell *cust;
@end

およびimTableViewController.mには

- (void)viewDidLoad
{
[super viewDidLoad];  
 url=[NSURL URLWithString:urlstring];

urldata=[[NSString alloc]initWithContentsOfURL:url];
mutarray=[[NSMutableArray alloc]init];

self.mutarray=[urldata JSONValue];



 NSDictionary *dict=[mutarray objectAtIndex:0];

self.title=[dict valueForKey:@"category"];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell =(CustomCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

}

cell.custurlstring=urlstring;
NSLog(@"%@", cell.custurlstring);
return cell;
}

私のカスタムTableviewcell.hには

#import <UIKit/UIKit.h>

@interface CustomCell : UITableViewCell{
NSString *custurlstring;


}
@end

私のカスタムTableviewcell.mには

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {

  NSLog(@"%@",custurlstring);
}
return self;
}

NSLogを使用してtableviewcontrollerで文字列の内容を取得しましたが、TableViewCellで値を出力しようとすると、それらの値を取得できません...ガイダンスお願いします...

4

3 に答える 3

2

cellForRowAtIndexPath:セルを設定してから、このメソッド内のセルに文字列を設定する必要があります。このメソッドは、を作成するときにすでに提供されていますUITableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.custurlstring = urlstring;
    return cell;
}
于 2012-07-23T12:33:15.540 に答える
2

画像とラベルを表示するためにセルをカスタマイズする必要はありません。通常のセルに追加するだけです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"MyCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {        
    cell = [[CustomCell alloc] initWithStyle:<style enum value> reuseIdentifier:reuseIdentifier string:urlstring]
    //cell.mystring = self.mystring;
}

// customize your image and your labels here with rects here


UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"yourimage.png"]];
    [cell.contentView addSubview:image];

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(your rect here)];
[cell.contentView addSubview:label];

return cell;
}
于 2012-07-24T11:05:50.563 に答える
1

デリゲートメソッドで実行する必要があります-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

あなたはそのようなものを書くことができます:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {        
    cell = [[CustomCell alloc] initWithStyle:<style enum value> reuseIdentifier:reuseIdentifier string:urlstring]
    //cell.mystring = self.mystring;
}

return cell;
}

追加:カスタムコンストラクターを作成し、それを使用してセルを初期化できます。このようにして、NSLogは期待どおりに文字列を出力します。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier string:(NSString *)string
{
self = [self initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {

 self.custurl=[NSURL URLWithString:string];
  NSLog(@"%@",custurl);
}
return self;
}
于 2012-07-23T12:31:11.980 に答える