警报完成不完全正常

时间:2018-03-06 21:02:21

标签: ios swift storyboard uialertcontroller

我有警报,警报显示后,我想呈现一个不同的viewFinder。 doSomething()函数被触发," TEST"已打印,但未显示新的取景器。我错过了什么?

警报

Id - Reference
1   - ST1
2   - ST2

内容功能doSomething()

public class SchoolContext : DbContext
{
    public DbSet<Student> Student { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Student>()
        .Property(b => b.Id)            
        .ValueGeneratedOnAdd();

        modelBuilder.Entity<Student>()
        .Property(b => b.Reference)
        .HasComputedColumnSql("[Id]")
        .ValueGeneratedOnAdd();
    }
}

1 个答案:

答案 0 :(得分:5)

取消视图控制器时,视图控制器上的完成块不会触发。它在视图控制器完成呈现时触发(例如,它已完成viewDidAppear)。

老实说,我希望这会崩溃,因为你在警报仍然存在的时候试图出现。

在任何情况下,在尝试呈现下一个View Controller之前,您需要等到UIAlertController被解雇。

您可以在OK操作的处理程序中执行此操作:

    let alert = UIAlertController(title: "Sorry", message: "Booked out.",
                                  preferredStyle: UIAlertControllerStyle.alert)
    alert.addAction(UIAlertAction(title: "OK", style:
        UIAlertActionStyle.default, handler: doSomething))
    self.present(alert, animated: true, completion: nil)

...

func doSomething(action:UIAlertAction) {
    /// present the next VC here
}