zoukankan      html  css  js  c++  java
  • monodelvelop中运行后弹出指定xib窗体及显示分组数据

    环境:苹果系统 

    开发工具:monodevelop xcode

    开发语言:c#

    疑问:如何在新建的monotouch空项目中 运行后弹出指定的xib窗体

    解答:

          1、首先添加新文件,选择ipad/iphone view controller,命名为mainwindows

          2、在mainwindows中写入如下代码(使用UITableView显示分组数据,格式化代码快捷键Ctrl+i):

    View Code
      1 using System.Linq;
      2 using System;
      3 using System.Drawing;
      4 using System.Globalization;
      5 using System.Collections.Generic;
      6 using MonoTouch.Foundation;
      7 using MonoTouch.UIKit;
      8 
      9 namespace tables03s {
     10     
     11     struct Element
     12     {
     13         public string Number{get;set;}
     14         public string Name{get;set;}
     15         public string Symbol{get;set;}
     16         public string Family{get;set;}
     17         public string StartsWith{get{return Name.Substring(0,1);}}
     18     }
     19     public partial class mainWindows : UIViewController {
     20         private List<Element> elements;
     21         public mainWindows() : base ("mainWindows", null) {
     22             
     23             elements = new List<Element>
     24             {
     25                 new Element{Name="hydrogen",Number="1",Symbol="H",Family="Hydrogen"},
     26                 new Element{Name="helium",Number="2",Symbol="He",Family="Noble gas"},
     27                 new Element{Name="lithium",Number="3",Symbol="Li",Family="Alkali Metal"},
     28                 new Element{Name="beryllium",Number="4",Symbol="Be",Family="Alkaline Earth"},
     29                 new Element{Name="boron",Number="5",Symbol="B",Family="Boron"},
     30                 new Element{Name="carbon",Number="6",Symbol="C",Family="Carbon"},
     31                 new Element{Name="nitrogen",Number="7",Symbol="N",Family="Pnictide"},
     32                 new Element{Name="oxygen",Number="8",Symbol="O",Family="Chalcogen"},
     33                 new Element{Name="fluorine",Number="9",Symbol="F",Family="Halogen"},
     34                 new Element{Name="neon",Number="10",Symbol="Ne",Family="Noble gas"},
     35                 new Element{Name="sodium",Number="11",Symbol="Na",Family="Alkali Metal"},
     36                 new Element{Name="magnesium",Number="12",Symbol="Mg",Family="Alkaline Earth"},
     37                 new Element{Name="aluminum",Number="13",Symbol="Al",Family="Boron"},
     38                 new Element{Name="silicon",Number="14",Symbol="Si",Family="Boron"}
     39                 
     40             };
     41             
     42             
     43         }
     44         
     45         
     46         public override void DidReceiveMemoryWarning() {
     47             // Releases the view if it doesn't have a superview.
     48             base.DidReceiveMemoryWarning();
     49             
     50             // Release any cached data, images, etc that aren't in use.
     51         }
     52         
     53         public override void ViewDidLoad() {
     54             base.ViewDidLoad();
     55             tableViews.Source=new MyTableViewSource(elements);
     56             //    tableViews.Source=new MyTableViewSource(elements);
     57             // Perform any additional setup after loading the view, typically from a nib.
     58         }
     59         
     60         public override void ViewDidUnload() {
     61             base.ViewDidUnload();
     62             
     63             // Clear any references to subviews of the main view in order to
     64             // allow the Garbage Collector to collect them sooner.
     65             //
     66             // e.g. myOutlet.Dispose (); myOutlet = null;
     67             
     68             ReleaseDesignerOutlets();
     69         }
     70         
     71         public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation toInterfaceOrientation) {
     72             // Return true for supported orientations
     73             return (toInterfaceOrientation != UIInterfaceOrientation.PortraitUpsideDown);
     74         }
     75         
     76         private class MyTableViewSource:UITableViewSource
     77         {
     78             private  List<string> sectionTitles;
     79             private SortedDictionary<int,List<Element>> sectionElements
     80                 =new SortedDictionary<int, List<Element>>();
     81             public MyTableViewSource(List<Element> list)
     82             {
     83                 sectionTitles=(from c in list select c.StartsWith).Distinct().ToList();
     84                 sectionTitles.Sort();
     85                 foreach(var element in list)
     86                 {
     87                     int sectionNum=sectionTitles.IndexOf(element.StartsWith);
     88                     if(sectionElements.ContainsKey(sectionNum))
     89                     {
     90                         sectionElements[sectionNum].Add(element);
     91                     }
     92                     else
     93                     {
     94                         sectionElements.Add(sectionNum,new List<Element>{element});
     95                     }
     96                     
     97                 }
     98                 
     99             }
    100             public override int NumberOfSections(UITableView tableView) {
    101                 return sectionTitles.Count;
    102             }
    103             public override string TitleForHeader(UITableView tableView, int section) {
    104                 return sectionTitles[section];
    105             }
    106             public override string[] SectionIndexTitles(UITableView tableView) {
    107                 return sectionTitles.ToArray();
    108             }
    109             public override int RowsInSection(UITableView tableview, int section) {
    110                 return sectionElements[section].Count;
    111             }
    112             public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) {
    113                 
    114                 string kCellIdetifier="mycell";
    115                 UITableViewCell cell=tableView.DequeueReusableCell(kCellIdetifier);
    116                 if(cell==null)
    117                 {
    118                     cell=new UITableViewCell(UITableViewCellStyle.Value2,kCellIdetifier);
    119                 }
    120                 Element display=sectionElements[indexPath.Section][indexPath.Row];
    121                 cell.TextLabel.Text=display.Symbol;
    122                 cell.DetailTextLabel.Text=display.Name;
    123                 cell.DetailTextLabel.Font=UIFont.SystemFontOfSize(20);
    124                 return cell;
    125             }
    126             public override void RowSelected(UITableView tableView, NSIndexPath indexPath) {
    127                 Element display=sectionElements[indexPath.Section][indexPath.Row];
    128                 ShowAlert("RowSelected","You selected "+display.Name);
    129                 tableView.DeselectRow(indexPath,true);
    130             }
    131             public void ShowAlert(string title,string message)
    132             {
    133                 using (var alert=new UIAlertView(title,message,null,"OK",null))
    134                 {
    135                     alert.Show();
    136                 }
    137             }
    138         }
    139     }
    140     
    141 }

          3、在AppDelegate中写入如下代码,主要调用了window的RootViewController属性:

    View Code
     1 public partial class AppDelegate : UIApplicationDelegate {
     2     // class-level declarations
     3     UIWindow window;
     4     mainWindows mainUiwindows;
     5     //
     6     // This method is invoked when the application has loaded and is ready to run. In this 
     7     // method you should instantiate the window, load the UI into it and then make the window
     8     // visible.
     9     //
    10     // You have 17 seconds to return from this method, or iOS will terminate your application.
    11     //
    12     public override bool FinishedLaunching(UIApplication app, NSDictionary options) {
    13         window = new UIWindow(UIScreen.MainScreen.Bounds);
    14         mainUiwindows=new mainWindows();
    15         window.RootViewController=mainUiwindows; //important
    16         window.MakeKeyAndVisible();
    17         return true;
    18     }
    19 }

          4、效果图如下:

          

         

  • 相关阅读:
    【Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!
    作为Web开发人员,我为什么喜欢Google Chrome浏览器
    站长的痛苦:鲜为人知让网站不再被K的秘决
    iOS多任务:suspend VS terminate
    社交网络让互联网“笑”了 让安全“哭”了
    好的程序员做不出好的软件设计
    影响搜索引擎收录网站内容的四大原因分析
    我是马云:新入职员工勿批判公司
    25个非常棒的jQuery滑块插件和教程
    联通进军IM市场
  • 原文地址:https://www.cnblogs.com/flowwind/p/2715332.html
Copyright © 2011-2022 走看看