6

配列からオブジェクトを設定したいTableViewコントローラーがあります。ストーリーボードを使用しています。また、ストーリーボードのセル プロトタイプにプレースホルダーのタイプとしてラベルを配置する必要があるかどうかもわかりません。

私の aList Mutable Array には Homework タイプのオブジェクトが含まれています。テーブルの各行に表示したい (これらは宿題モデルで既に設定されている変数です):

-クラス名

-課題のタイトル

-期日

ここに私が現在持っているものがあります

TableViewController.h

@interface AssignmentTableController : UITableViewController
<
AssignmentDelegate
>

@property(strong,nonatomic) Assignment *vc;
@property (strong, nonatomic) NSMutableArray *alist;//array was filled with delegation 


@end

TableViewController.m

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

// Return the number of sections.
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

// Return the number of rows in the section.
 return [self.alist count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier     forIndexPath:indexPath];
Homework *ai = [self.alist objectAtIndex:indexPath.row];

//*******I am not sure what to do from Here******
//*******I need to start displaying 1 object per row,displaying what was stated above***

  // Configure the cell...

return cell;
}
4

3 に答える 3

7

同様の実装があります。

実装: 以下のメソッドを作成しました。(提供されたコードに合うように編集しました。)

-(Homework*) homeworkAtIndex: (NSInteger) index
{
    return [alist objectAtIndex:index] ;
}

-(NSInteger) numberOfObjectsInList
{
    return [alist count];
}

また、UITableViewController デリゲート メソッドでは:

- (NSInteger) tableView: (UITableView*) tableView numberOfRowsInSection: (NSInteger) section

このメソッド呼び出しを使用しました

return [self numberOfObjectsInList]; 

デリゲート メソッドで:

- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:SubtitleIdentifier] autorelease];
    Homework *ai = [self homeworkAtIndex: indexPath.row];

    /* your other cell configurations
    cell.textLabel.text = ai.className; // eg. display name of text
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ | %@",ai.assignmentTitle,ai.dueDate]; // will show the cell with a detail text of "assignment title | due date" eg. "Lab 1 | 23 Oct 2013" appearing under the className called "Physics"
    */
}

メソッド homeworkAtIndex を使用すると、配列内のさまざまなオブジェクトをテーブル内のさまざまなセルに入力できます。

この方法で、カスタム セルを作成し、テーブルに合わせてセル サイズをフォーマットする必要がありました。表示されるデータがそれほど長くなく、実際にカスタム セルを使用する必要がない場合は、これでうまくいく可能性があります。(私が提供した例によく似ています)

選択されたさまざまなセルを確認する方法を知りたい場合 (後で別の viewController にプッシュしたい場合)、デリゲート メソッドでこれを行うことができます。

- (void) tableView: (UITableView*) tableView didSelectRowAtIndexPath: (NSIndexPath*) indexPath
{
    UIViewController* nextViewController = nil;
    NSString* cellDisplayName = [delegate homeworkAtIndex: indexPath.row].name; // can be the Homework object if you want
    if( [cellDisplayName isEqualToString:[self homeworkAtIndex:0].className] )
        nextViewController = [[firstViewController alloc] init];
    else if( [cellDisplayName isEqualToString:[self homeworkAtIndex:1].className] )
        nextViewController = [[secondViewController alloc] init];
    // goes on for the check depending on the number of items in the array
}

Homework オブジェクトが何であるかわからないため、ここでは NSString を使用して className を確認していますが、同じ className 変数を持つ異なるオブジェクトがある可能性があるため、宿題オブジェクトに合わせてロジックを変更できます。

お役に立てれば!:)

于 2013-10-23T01:57:45.297 に答える
3

配列を使用してテーブルビューを設定するチュートリアルがたくさんあります。これらのチュートリアルを見てください。

http://www.appcoda.com/ios-programming-tutorial-create-a-simple-table-view-app/

http://www.raywenderlich.com/1797/ios-tutorial-how-to-create-a-simple-iphone-app-part-1

3 つのラベルに対応するには、カスタム セルを実装する必要があります。デフォルトのテーブル セルには、通常、1 つの画像ビューと 2 つのラベルがあります。

于 2013-10-22T22:02:28.990 に答える
0

カスタムセルを使用する

http://www.appcoda.com/customize-table-view-cells-for-uitableview/

セルをビューとして使用し、セルのコンテンツビューにラベルを配置するだけです[1] 表示したいデータを含むオブジェクトが既にあることがわかりました。表示したいものを含むセルを使用してください

于 2013-10-22T22:01:48.050 に答える