ios-samples/MonoCatalog-MonoDevelop/AlertsViewController.xib.cs

206 строки
5.3 KiB
C#

//
// Alerts sample in C#
//
using System;
using UIKit;
using Foundation;
using CoreGraphics;
namespace MonoCatalog {
public partial class AlertsViewController : UITableViewController {
// Load our definition from the NIB file
public AlertsViewController () : base ("AlertsViewController", null)
{
}
struct AlertSample {
public string Title, Label, Source;
public AlertSample (string t, string l, string s)
{
Title = t;
Label = l;
Source = s;
}
}
static AlertSample [] samples;
static AlertsViewController ()
{
samples = new AlertSample [] {
new AlertSample ("UIActionSheet", "Show simple Dialog", "alert.cs: DialogSimpleAction ()"),
new AlertSample ("UIActionSheet", "Show OK Cancel Dialog", "alert.cs: DialogOkCancelAction ()"),
new AlertSample ("UIActionSheet", "Show Customized Dialog", "alert.cs: DialogOtherAction ()"),
new AlertSample ("UIAlertView", "Show simple Alert", "alert.cs: AlertSimpleAction ()"),
new AlertSample ("UIAlertView", "Show OK Cancel Alert", "alert.cs: AlertOkCancelAction ()"),
new AlertSample ("UIAlertView", "Show Customized Alert", "alert.cs: AlertOtherAction ()"),
};
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Title = "Alerts";
TableView.DataSource = new DataSource ();
TableView.Delegate = new TableDelegate (this);
}
void DialogSimpleAction ()
{
var actionSheet = new UIActionSheet ("UIActionSheet <title>", null, null, "OK", null){
Style = UIActionSheetStyle.Default
};
actionSheet.Clicked += delegate (object sender, UIButtonEventArgs args){
Console.WriteLine ("Clicked on item {0}", args.ButtonIndex);
};
actionSheet.ShowInView (View);
}
void DialogOkCancelAction ()
{
var actionSheet = new UIActionSheet ("UIActionSheet <title>", null, "Cancel", "OK", null){
Style = UIActionSheetStyle.Default
};
actionSheet.Clicked += delegate (object sender, UIButtonEventArgs args){
Console.WriteLine ("Clicked on item {0}", args.ButtonIndex);
};
actionSheet.ShowInView (View);
}
void DialogOtherAction ()
{
var actionSheet = new UIActionSheet ("UIActionSheet <title>", null, "Cancel", "OK", "Other1"){
Style = UIActionSheetStyle.Default
};
actionSheet.Clicked += delegate (object sender, UIButtonEventArgs args){
Console.WriteLine ("Clicked on item {0}", args.ButtonIndex);
};
actionSheet.ShowInView (View);
}
void AlertSimpleAction ()
{
using (var alert = new UIAlertView ("UIAlertView", "<Alert Message>", null, "OK", null))
alert.Show ();
}
void AlertOkCancelAction ()
{
using (var alert = new UIAlertView ("UIAlertView", "<Alert Message>", null, "Cancel", "OK"))
alert.Show ();
}
void AlertOtherAction ()
{
using (var alert = new UIAlertView ("UIAlertView", "<Alert Message>", null, "Cancel", "Button1", "Button2"))
alert.Show ();
}
#region Delegates for the table
class DataSource : UITableViewDataSource {
static NSString kDisplayCell_ID = new NSString ("AlertCellID");
static NSString kSourceCell_ID = new NSString ("SourceCellID");
public override nint NumberOfSections (UITableView tableView)
{
return samples.Length;
}
public override string TitleForHeader (UITableView tableView, nint section)
{
return samples [section].Title;
}
public override nint RowsInSection (UITableView tableView, nint section)
{
return 2;
}
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
UITableViewCell cell;
if (indexPath.Row == 0){
cell = tableView.DequeueReusableCell (kDisplayCell_ID);
if (cell == null)
cell = new UITableViewCell (UITableViewCellStyle.Default, kDisplayCell_ID);
cell.TextLabel.Text = samples [indexPath.Section].Label;
} else {
cell = tableView.DequeueReusableCell (kSourceCell_ID);
if (cell == null){
cell = new UITableViewCell (UITableViewCellStyle.Default, kSourceCell_ID){
SelectionStyle = UITableViewCellSelectionStyle.None
};
var label = cell.TextLabel;
label.Opaque = false;
label.TextAlignment = UITextAlignment.Center;
label.TextColor = UIColor.Gray;
label.Lines = 2;
label.Font = UIFont.SystemFontOfSize (12f);
}
cell.TextLabel.Text = samples [indexPath.Section].Source;
}
return cell;
}
}
class TableDelegate : UITableViewDelegate {
AlertsViewController avc;
public TableDelegate (AlertsViewController avc)
{
this.avc = avc;
}
public override nfloat GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
{
return indexPath.Row == 0 ? 50f : 22f;
}
public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
// deselect current row
tableView.DeselectRow (tableView.IndexPathForSelectedRow, true);
if (indexPath.Row == 0){
switch (indexPath.Section){
case 0:
avc.DialogSimpleAction ();
break;
case 1:
avc.DialogOkCancelAction ();
break;
case 2:
avc.DialogOtherAction ();
break;
case 3:
avc.AlertSimpleAction ();
break;
case 4:
avc.AlertOkCancelAction ();
break;
case 5:
avc.AlertOtherAction ();
break;
}
}
}
}
#endregion
}
}