0

だから私がやろうとしているのは、アプリにメモ帳スタイルを追加することです。私が望むのは、リンゴの既存のメモ帳とまったく同じように機能し、右上の「追加」ボタンをクリックすると、書き込み可能な新しいメモが作成され、完了をクリックするとメモがセルに追加されることだけですUITableView で。

私はすでに UITableView を持っており、すべてがセットアップされています。このアクションを実行する方法を知る必要があるだけです

-(IBAction)noteAdd:(id)sender{ }

そして、そのボタンをクリックすると、上で説明したことが実行されます。

どうすればこれを行うことができますか?私は少し迷っています。

ところで、TableView をシーンに追加する方法です。

//tableview datasource delegate methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return cameraArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];


if(cell == nil){
    cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:@"Cell"];
}

NSEnumerator *enumerator = [cameraArray objectEnumerator];
id anObject;
NSString *cellName = nil;
while (anObject = [enumerator nextObject]) {
   cellName = anObject;
}
//static NSString *cellName = [cameraArray.objectAtIndex];
cell.textLabel.text = [NSString stringWithFormat:cellName];
return cell;

}
4

1 に答える 1

1

UITableView

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

だからあなたは次のようなことをするでしょう

-(IBAction) noteAdd:(id)sender
{
    NSIndexPath *newCellPath = [NSIndexPath indexPathForRow:cameraArray.count 
                                                  inSection:0];

    // I'm assuming cameraArray is declared mutable.
    [cameraArray addObject:@"New item"];

    [self.tableView insertRowsAtIndexPaths:@[newCellPath]
                          withRowAnimation:UITableViewRowAnimationFade];
}

私がそれに取り組んでいる間、あなたのコードに関するいくつかのコメント:

私はこのコードを確信しています:

NSEnumerator *enumerator = [cameraArray objectEnumerator];
id anObject;
NSString *cellName = nil;
while (anObject = [enumerator nextObject]) {
   cellName = anObject;
}

配列内の最後の文字列を取得するためのかなり遠回りの方法です。で簡単にできますcameraArray.lastObject。でも、それはあなたが望んでいるものではないと思います。

// XCode >= 4.5:
cellName = cameraArray[indexPath.row];

// XCode < 4.5:
cellName = [cameraArray objectAtIndex:indexPath.row];

そして次の行:

cell.textLabel.text = [NSString stringWithFormat:cellName];

最良の場合、これにより不要な文字列が作成されます。セル名に が含まれている%と、ほぼ確実にエラーまたはEXC_BAD_ACCESS. そのエラーを修正するには、使用できます

cell.textLabel.text = [NSString stringWithFormat:@"%@", cellName];

しかし、本当に理由はありません。文字列を直接割り当てるだけです:

cell.textLabel.text = cellName;

または、コピーを主張する場合:

cell.textLabel.text = [NSString stringWithString:cellName];
// OR
cell.textLabel.text = [[cellName copy] autorelease];
// OR
于 2012-10-12T03:21:08.517 に答える