我正在使用Xamarin.iOS开发应用程序。它将有很多我无法使用Main.StoryBoard设计的屏幕,所以我必须分别设计每个ViewController。现在我有2个屏幕:ViewController.cs
和InProgress.cs
。我已将ViewController.cs
封装在Main.StoryBoard中的NavigationController
内。以下是代码:
ViewController.cs(ViewDidLoad)
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
//change the navigation bar controller
this.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB (26f / 255f, 56f / 255f, 100f / 255f);
this.NavigationController.NavigationBar.TitleTextAttributes = new UIStringAttributes()
{
ForegroundColor = UIColor.White
};
NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
//change the layout of collectionView Layout
//initialize the data
sectionCategories = new List<SectionCategory>();
sectionCategories.Add(new SectionCategory("Lajme", "http://www.ikub.al/media/iOS/lajme.jpg"));
......
sectionCategories.Add(new SectionCategory("Shtypi i dites", "http://www.ikub.al/media/HP/shtypi.jpg"));
sectionGrid.RegisterClassForCell(typeof(SectionViewCell), SectionViewCell.CellID);
sectionGrid.Source = new SectionViewSource (sectionCategories,this);
}
当我点击sectionGrid
的某个项目时,它会在堆栈中推送一个新的ViewController
。
var soonVC = new InProgress ("InProgress");
soonVC.Title = "InProgress";
owner.NavigationController.PushViewController(soonVC, true);
InProgress屏幕包含.cs
文件,.desigener.cs
文件和.xib
文件,如下所示:
public partial class InProgress : UIViewController
{
String section;
public InProgress (String text) : base ("InProgress", null)
{
section = text;
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
}
public override void DidReceiveMemoryWarning ()
{
base.DidReceiveMemoryWarning ();
// Release any cached data, images, etc that aren't in use.
}
}
[Register ("InProgress")]
partial class InProgress
{
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UILabel labelComingSoon { get; set; }
void ReleaseDesignerOutlets ()
{
if (labelComingSoon != null) {
labelComingSoon.Dispose ();
labelComingSoon = null;
}
}
}
但我有两个问题:
NavigationBar
。我尝试了一些像
这样的代码soonVC.NavigationItem.LeftBarButtonItem.Title = " dsf";
但它给了我一个空对象。
对这两个问题都有任何建议。
答案 0 :(得分:0)
在InProgress
课程中,您可以设置后退按钮文字,如下所示:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
UIBarButtonItem newBackButton = new UIBarButtonItem("dfs",UIBarButtonItemStyle.Plain, (sender,args) => NavigationController.PopViewController (true));
NavigationItem.SetLeftBarButtonItem (newBackButton, false);
// The line below will move the search bar below the nav bar
NavigationController.NavigationBar.Translucent = false;
}
关于下一个问题:
当我在Xib文件中设计布局时,我有标签 中心,但实际上它不在屏幕的中心,因为它 没有考虑导航栏的高度,所以 某些布局可能隐藏在导航栏下。
您使用的是Autolayout吗?您需要做的就是向中心垂直添加一个约束,它应该在视图中居中。你能上传你的xib吗?如果你没有使用Autolayout,你只需要调整导航控制器。
<强>更新强> 如果您将导航栏设置为不是半透明的,它将位于导航栏下方。您可以在InProgress类中设置此项,也可以在故事板中设置此项:
我还在你的xib中添加了自动布局限制,使你的标签居中于xib xml:
HTH。