使用 UIActionsheet 的时候,如果otherButton太多的话,取消按钮会排版到最下面,如果otherButton很少的话,取消按钮又排版在上面。
这样点击按钮时我们收到的按钮index 不是很确定。
所以干脆就让取消按钮一直在下面。
代码如下:
// 创建时不指定按钮 UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Dynamic UIActionSheet" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; // 逐个添加按钮(比如可以是数组循环) [sheet addButtonWithTitle:@"Item A"]; [sheet addButtonWithTitle:@"Item B"]; [sheet addButtonWithTitle:@"Item C"]; // 同时添加一个取消按钮 [sheet addButtonWithTitle:@"Cancel"]; // 将取消按钮的index设置成我们刚添加的那个按钮,这样在delegate中就可以知道是那个按钮 sheet.cancelButtonIndex = sheet.numberOfButtons-1; [sheet showFromRect:view.bounds inView:view animated:YES]; [sheet release];
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == actionSheet.cancelButtonIndex) { return; } switch (buttonIndex) { case 0: { NSLog(@"Item A Selected"); break; } case 1: { NSLog(@"Item B Selected"); break; } case 2: { NSLog(@"Item C Selected"); break; } } }