TableView を並べ替えるために、NavigationBar に「並べ替え」ボタンを追加しました。TableView は次のように構築されます。
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *myfile = [[NSBundle mainBundle]
pathForResource:@"Object" ofType:@"plist"];
sortedObjectes = [[NSMutableArray alloc]initWithContentsOfFile:myfile];
NSSortDescriptor * sortDesc = [[NSSortDescriptor alloc] initWithKey:@"Popularity" ascending:YES];
[sortedObjects sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
[super viewDidLoad];
}
これは、並べ替えボタンのアクションです。
- (IBAction)SortButton:(id)sender;
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sort by" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Name", @"Country", @"Popularity", nil];
[alert show];
[alert release];
}
そして、これはボタンのクリックをキャッチするデリゲート メソッドです。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
//Sort by name
}
else if (buttonIndex == 1)
{
//Sort by country
}
else if (buttonIndex == 2)
{
//Sort by popularity
}
}
ClickedButtonAtIndex で SortDescriptor メソッドを実装し、TableView を更新するにはどうすればよいですか?
デフォルトでテーブルビューを人気順にソートしたい。
Plist 構造 (辞書の配列):
plist version="1.0">
array>
dict>
key>Country /key>
string>Italy /string>
key>Name /key>
string>Fezzudo /string>
key>Popularity /key>
integer>1 /integer>
/dict>
dict>
key>Country /key>
string>Spanin /string>
key>Name /key>
string>Alamos Malbec /string>
key>Popularity /key>
integer>2 /integer>
/dict>
/array>
/plist>
表示するためにhtmlコードの先頭を削除する必要がありました..それは混乱しているように見えるので、誰かが私のためにそれを修正する方法を知っていると思います..